赞
踩
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++初始化类成员的,它们是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
#include <iostream>
class 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;
}
运行结果:
0
2
可能以为上面的代码将会首先初始化 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;
}
};
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。