构造函数 构造函数是一个与类同名,没有返回值的特殊成员函数。一般用于初始化类的数据成员,每当创建一个对象时(包括使用new动态创建对象),编译系统就自动调用构造函数。构造函数既可在类外定义,也可作为内联函数在类内定义。 例:
class qq class qq { { int q[20]; int q[20]; int i,j; int i,j; public: public: qq(); qq(); { int qget(); i=j=0; }; cout<<"调用构造函数"<<endl; qq::qq() } { int qget(); i=j=0; }; cout<<"调用构造函数"<<endl; }(以上两种方式等价)
带默认参数的构造函数 只要一个类定义了一个构造函数,c++语言就不再提供默认的构造函数。如果为类定义了一个带参数的构造函数,还想要使用无参构造函数,则必须自己定义。 默认构造函数示例:
qq(int q=5,int w=4) { i=q; j=w; }初始化列表的方式:
class Person { public: 传统方式初始化 //Person(int a, int b, int c) { // m_A = a; // m_B = b; // m_C = c; //} //初始化列表方式初始化 Person(int a, int b, int c) :m_A(a), m_B(b), m_C(c) {} void PrintPerson() { cout << "mA:" << m_A << endl; cout << "mB:" << m_B << endl; cout << "mC:" << m_C << endl; } private: int m_A; int m_B; int m_C; };构造函数的调用
括号法: Student p1(10); 显示法: Student p2(10)=Student(10); 隐式转换法 :Student p3=10;
注意: 调用无参构造函数时,不能加括号,加了编译器会认为时一个函数声明
不能利用拷贝构造函数初始化匿名对象,编译器会认为是对象的声明 Student (p4) = Student p4;