C++拾遗--构造函数
前言
对一个类而言,构造函数恐怕是最重要的一个成员函数了。关于构造函数的细节繁多,并且随着新标准的提出,构造函数有了新的特性。本文来集中探讨下构造函数的那些鲜为人知的一面。
构造函数
构造函数的作用众所周知:在类的对象被创建时,控制对象的初始化和赋值。
构造函数的一般形式:
类名(arg_list);
其中arg_list是用逗号隔开的参数列表。
特点:无返回值类型,且不可加const限制。
默认构造函数
需要特别指出,无参的构造函数是默认的,有参但都有默认参数的构造函数也是默认构造。
举例证明:
#include <iostream> using namespace std; class MyClass { protected: int a = 0; int b{1}; public: MyClass(int a = 0, int b = 0):a(a), b(b) //有默认实参的构造方法就是默认构造 { cout << "MyClass(int a = 0, int b = 0)" << endl; } int getA()const { return a; } int getB()const { return b; } }; int main() { MyClass my; //调用默认构造 cout << "a = " << my.getA() << ends << "b = " << my.getB() << endl; cin.get(); return 0; }运行
从运行结果,即可验证结论。有参但都有默认参数的构造函数也是默认构造,这一点恐怕是很多人都容易忽略的、
默认构造初始化类的数据成员的规则:
#include <iostream> using namespace std; class MyClass { protected: int a = 0; const int ca = 0; int& ra; public: MyClass(int a) :a(a), ca(a), ra(this->a){} int getA()const { return a; } void printCa()const { cout << "ca = " << ca << endl; } void printRa()const { cout << "ra = " << ra << endl; } }; int main() { MyClass my(1); cout << my.getA() << endl; my.printCa(); my.printRa(); cin.get(); return 0; }运行
原文地址:http://blog.csdn.net/zhangxiangdavaid/article/details/43732347