大家好,我是阿林。今天我来分享c++的相关的匿名函数和构造函数的内容。
本博客重点说明在构造函数中使用构造函数将会出现的问题。
在构造函数中使用构造函数,这嵌套在里面的构造函数是相当于是一个匿名的构造,这个就是深拷贝,会另外构造一个空间去储存,但因为没有人去承接这个匿名函数,结果就结束了自己的生命周期了。我下面就用代码显示一下效果。
出现的c值是个错误的数值。
#include <iostream>
using namespace std;
class MyTest
{
public:
MyTest(int a,int b,int c)
{
this->a = a;
this->b = b;
this->c = c;
}
MyTest(int a, int b)
{
this->a = a;
this->b = b;
MyTest(a, b, 100); //这个相当于是一个匿名的构造,这个就是深拷贝,会另外构造一个空间去储存,但因为没有人去承接这个匿名函数,结果就结束了自己的生命周期了。
}
~MyTest()
{
cout << "a: " << a << " b: " << b << " c:" << c << endl;
}
protected:
private:
int a;
int b;
int c;
public :
int getC() const
{
return c;
}
void setC(int val)
{
c = val;
}
};
int main()
{
MyTest t1(1, 2);
printf("c:%d", t1.getC()); //请问c的值是多少?
system("pause");
return 0;
}