构造函数的重载
发布时间:2023-06-02 11:21:56 所属栏目:语言 来源:
导读:和普通成员函数一样,构造函数是允许重载的。一个类可以有多个重载的构造函数,创建对象时根据传递的实参来判断调用哪一个构造函数。
构造函数的调用是强制性的,一旦在类中定义了构造函数,那么创建对象时就一定
构造函数的调用是强制性的,一旦在类中定义了构造函数,那么创建对象时就一定
和普通成员函数一样,构造函数是允许重载的。一个类可以有多个重载的构造函数,创建对象时根据传递的实参来判断调用哪一个构造函数。 构造函数的调用是强制性的,一旦在类中定义了构造函数,那么创建对象时就一定要调用,不调用是错误的。如果有多个重载的构造函数,那么创建对象时提供的实参必须和其中的一个构造函数匹配;反过来说,创建对象时只有一个构造函数会被调用。 如果写作Student stu或者new Student就是错误的,因为类中包含了构造函数,而创建对象时却没有调用。 再添加一个构造函数: #include <iostream> using namespace std; class Student{ private: char *m_name; int m_age; float m_score; public: Student(); Student(char *name, int age, float score); void setname(char *name); void setage(int age); void setscore(float score); void show(); }; Student::Student(){ m_name = NULL; m_age = 0; m_score = 0.0; } Student::Student(char *name, int age, float score){ m_name = name; m_age = age; m_score = score; } void Student::setname(char *name){ m_name = name; } void Student::setage(int age){ m_age = age; } void Student::setscore(float score){ m_score = score; } void Student::show(){ if(m_name == NULL || m_age <= 0){ cout<<"成员变量还未初始化"<<endl; }else{ cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl; } } int main(){ //调用构造函数 Student(char *, int, float) Student stu("小明", 15, 92.5f); stu.show(); //调用构造函数 Student() Student *pstu = new Student(); pstu -> show(); pstu -> setname("李华"); pstu -> setage(16); pstu -> setscore(96); pstu -> show(); return 0; } 运行结果: 小明的年龄是15,成绩是92.5 成员变量还未初始化 李华的年龄是16,成绩是96 构造函数Student(char *, int, float)为各个成员变量赋值,构造函数Student()将各个成员变量的值设置为空,它们是重载关系。根据Student()创建对象时不会赋予成员变量有效值,所以还要调用成员函数 setname()、setage()、setscore() 来给它们重新赋值。 构造函数在实际开发中会大量使用,它往往用来做一些初始化工作,例如对成员变量赋值、预先打开文件等。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |