本文共 1417 字,大约阅读时间需要 4 分钟。
class Person{private: int age;public: Person(int age) { this->age = age; } int getAge() { return age; }};int main(){ Person* p = new Person(10); std::cout << p->getAge() << std::endl; return 0;}
以上代码中 this->age = age; 执行前age已经被默认初始化。
提高效率,省掉构造函数中的开销。
它是关于C++初始化类成员的,它们是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
#includeclass Test{private: int x; int y;public: Test(int a, int b): y(b), x(y) { } int getX() { return x; } int getY() { return y; }};int main(){ Test* test = new Test(1,2); std::cout << test->getX() << std::endl; std::cout << test->getY() << std::endl; return 0;}
运行结果:
02
可能以为上面的代码将会首先初始化 y = 2,然后再初始化 x = y = 2,然而x = 0,因为按照声明的顺序是要先初始化x, 然后再初始化y,所以x = 0。
class ABC{public: ABC(int x,int y,int z);private: int a; int b; int c;};class MyClass{public: MyClass():abc(1,2,3) { }private: ABC abc;};
class Base{private: int i;public: Base(int i){ this->i = i; }};class Inheritance: public Base{private: int j;public: Inheritance(int j): Base(10) { this->j = j; }};
转载地址:http://ywjmb.baihongyu.com/