如何用数据成员和成员函数c ++编写类

时间:2011-10-14 12:31:53

标签: visual-c++

嗨,伙计们,我希望你帮我完成我的任务,我试图解决它,但有一些事情让我:我知道如何创建名称和id

string Name; int Id;

bt wt是否指向动态分配的成绩数组的指针:s:s:S? 我知道如何声明一个指针:double * Grades;

这是作业......

使用以下数据成员创建Class StudentGrades:

  • 名称:type String
  • Id:类型整数
  • 成绩:指向动态分配的成绩数组的指针。类型是:指向double(* double)
  • 的指针

它包括以下成员函数:

  • 无争论构造函数
  • 一个带有两个参数的构造函数:String和Integer,使用String初始化Name,使用Integer初始化ID。
  • 设置并获取名称,ID
  • 的功能
  • 学生信息的打印功能。它打印名称,Id和等级。
  • 类对象的重载Assignment运算符
  • 类对象的复制构造函数
  • 使用复制构造函数和重载赋值运算符的语法。

在另一个文件中创建一个C ++程序,该程序提示用户输入数据以创建StudentGrades类的四个对象。第一个对象(std1)有5个等级,第二个(std2)有6个等级,第三个(std3)有4个等级,第四个(std4)没有等级和数据。 然后将std2复制到std4并将std1分配给std3。然后打印四个对象的详细信息

嘿,我解决了我的任务,我试图运行它,但它无法正常工作请告诉我问题在哪个方案

#include <iostream>

using namespace std;

class student_grades{
private:
    string name,n;
    int Id,i;
    double* grades[];

public:
    student_grades();

    student_grades(sting, int);

    student_grades(const student_grades&);

    void set(string name,int Id){
        cout << "enter the name and the ID";
        cin >> n >> i;
        n = name;
        i = Id;
    }

    void get(){
        return i;
        return n;
    }

    void student_grades (student_grades&opr){
        name = name.opr;
        Id = Id.opr;
        grades[] = grades[].opr;
    }

    void student_info(){
        cout << "the name of the student is:" << name;
        cout << "the id for the srudent is:" << Id;
        grades = new double[];
        cout << "the grades of the student is:" << grades[] << endl;
        delete []grades;
    }

};

student_grades::student_grades() {}

student_grades::student_grades(string name, int Id) {
    name=" ";
    Id=0;
}

student_grades::student_grades(const student_grades& copy) {
    name=copy.name;
    Id=copy.Id;
}

int main() {

    student_grades std1;
    std1.set();
    cin >> std1.grades[5];
    std1.get();

    student_grades std2;
    std2.set();
    cin >> std2.grades[6];
    std2.get();

    student_grades std3;
    std3.set();
    cin >> std3.grades[4];
    std3.get();

    student_grades std4;
    std4.set();
    cin >> std4.grades[];
    std4.get();

    std1 = std3;
    std2 = std4;

    cout << std1 << std2 << std3 << std4;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

动态分配的数组是一个在运行时之前没有给定特定大小的数组,与固定数组声明在编译时不同。 fixed 数组的声明如下所示:

int grades[500];

该数组将为500个整数分配内存并保持这种状态,除非你将其销毁或调整大小。

创建动态分配的数组看起来更像是这样:

int* grades = NULL; // A declaration in your StudentGrades class
int n = <get size from somewhere>; // Makes the size "dynamic"
grades = new int[n]; // This definition could be in your StudentGrades ctor,
                     // with n being a parameter.

然后,您可以继续将所有数组元素初始化为0,或者根据需要使用其他值填充数组。完成阵列后,请将其清理干净。这可能在你的析构函数中:

delete [] grades;
grades = NULL;