#include<iostream> using namespace std; class CStudent { private: char name[20]; int num; int Chinese, Physical, History; public: CStudent(); //无参构造函数的声明 CStudent(char* pName, int n, int C, int P, int History) ; //有参构造函数的声明 CStudent(const CStudent &stu) //拷贝构造函数 { strcpy(name, stu.name); num = stu.num; Chinese = stu.Chinese; Physical = stu.Physical; this->History = stu.History; } ~CStudent() {} char* getName() { return name; } int getNum() { return num; } int getChinese() { return Chinese; } int getPhysical() { return Physical; } int getHistory() { return History; } void operator=(CStudent stu); }; #include"student.h" #include <string> CStudent::CStudent(char *pName, int n, int C, int P, int History) { strcpy(name, pName); num = n; Chinese =C; Physical = P; this->History = History; } void CStudent::operator=(CStudent stu) { strcpy(name, stu.name); num = stu.num; Chinese = stu.Chinese; Physical = stu.Physical; History = stu.History; } int main() { cout << "用不带参数的构造函数创建对象:" << endl; CStudent s1; cout << sizeof(s1) << endl; cout << s1.getName() << " " << s1.getNum() << " " << s1.getChinese() << " " << s1.getHistory() << " " << s1.getPhysical() << endl; cout << "用带参数的构造函数创建对象:" << endl; CStudent s2("顾斌", 221404205, 120, 98, 70); cout << sizeof(s2) << endl; cout << s2.getName()<< "顾斌" << s2.getNum() << " " << s2.getChinese() << " " << s2.getHistory() << " " << s2.getPhysical() << endl; cout << "用拷贝初始化构造函数创建对象:" << endl; CStudent s3(s2); cout << sizeof(s3) << endl; cout << s3.getName()<< " " << s3.getNum() << " " << s3.getChinese() << " " << s3.getHistory() << " " << s3.getPhysical()<< endl; cout << "用=给对象赋值:" << endl; CStudent s4; s4 = s2; cout << s4.getName()<< " " << s4.getNum() << " " << s4.getChinese() << " " << s4.getHistory() << " " << s4.getPhysical() << endl; return 1; }
时间: 2023-10-30 09:20:00 浏览: 72
这段代码定义了一个名为 CStudent 的类,其中包括了无参构造函数、有参构造函数、拷贝构造函数和一个重载了赋值运算符的函数。主函数中创建了四个 CStudent 类的对象,并对这些对象进行了不同的操作。
在这段代码中,CStudent 类的成员变量有 name、num、Chinese、Physical 和 History,分别表示学生的姓名、学号、语文成绩、物理成绩和历史成绩。CStudent 类的成员函数包括了构造函数、拷贝构造函数、析构函数、获取成员变量值的函数和重载赋值运算符的函数。其中,构造函数可以有无参和有参两种形式,拷贝构造函数用于将一个已有对象的值赋给新创建的对象,赋值运算符的函数用于将一个对象的值赋给另一个对象。
在主函数中,首先创建了一个不带参数的 CStudent 类对象 s1,然后输出该对象的成员变量值。接着创建了一个带参数的 CStudent 类对象 s2,并输出其成员变量值。然后又创建了一个拷贝初始化的 CStudent 类对象 s3,并输出其成员变量值。最后,将 s2 对象的值赋给了 s4 对象,并输出 s4 的成员变量值。
阅读全文