-
C++中赋值函数和拷贝构造函数
-
达内南京C++培训老师介绍,拷贝构造函数发生在对象还没有创建,需要创建时
如: MyClass obj1(1);
MyClassobj3 = obj1;
赋值操作符重载仅发生在对象已经执行过构造函数,即已经创建的情况下
如:
MyClass obj1(1);
MyClass obj3;
obj3 = obj1;
具体代码如下:
class MyClass
{
public:
MyClass( int i = 0)
{
cout << i;
}
MyClass( const MyClass &x)
{
cout << 2;
}
MyClass &operator=(const MyClass & x)
{
cout << 3;
return *this ;
}
~MyClass()
{
cout << 4;
}
};
int main()
{
MyClass obj1(1);
MyClass obj2(2);
MyClass obj3;
obj3 = obj1;
return 0;
}
输出:1203444
先创建对象obj1,调用构造函数并初始化为1,输出1
再创建对象obj2,调用构造函数并初始化为2,输出2
创建对象obj3,调用构造函数,使用默认值为0,输出0
obj1赋值给obj3时,调用赋值函数,输出3
再依次析构,析构的顺序和调用构造的顺序相反
先析构obj3,在析构obj2,最后析构obj1
class MyClass
{
public:
MyClass( int i = 0)
{
cout << i;
}
MyClass( const MyClass &x)
{
cout << 2;
}
MyClass &operator=(const MyClass & x)
{
cout << 3;
return *this ;
}
~MyClass()
{
cout << 4;
}
};
int main()
{
MyClass obj1(1);
MyClass obj2(2);
MyClass obj3 = obj1;
return 0;
}
输出:122444
依次创建对象obj1,obj2,调用两次构造,分别输出初始化的值1,2
MyClass obj3 = obj1;由于赋值的时候obj3还没有创建,所以会调用拷贝构造函数,输出2
再依次析构三个对象
上一篇:浅析C++多态及其实现模式
- 达内教育集团受邀出席第十四届中国国际软交会06.23
- 南京达内C++培训老师分析C++行业就业前景08.15
- 参加南京C++培训学开发,玩转IT互联网08.12
- 南京C++培训:C++主要应用在哪些领域08.11
- 学习C++有哪些需要注意的难点08.10
- 优秀的C++程序员需要具备的三个习惯08.09
相关文章
- 达内南京C++培训都有哪些培训地点?11.16
- 南京C++培训学校南京达内分析C++前景11.02
- 大专生参加达内C++培训,获10K高薪任职C++工程师开启职场生涯10.24
- 达内南京C++培训怎么样?10.17
- 南京C++培训实现人才与企业双对接09.28
- 为什么这么多人选择南京达内参加C++培训呢?10.17
最新资讯
最新开班日期 | 更多

c++--零基础全日制班
开班日期:04-28

c++--零基础周末班
开班日期:04-28

c++--高薪就业班
开班日期:04-28

c++--免费训练营
开班日期:04-28
达内新闻 | 更多
- + 达内教育集团受邀出席第十四届中国国际软交会(06.23)
- + 达内南京C++培训都有哪些培训地点?(11.16)
- + 南京C++培训学校南京达内分析C++前景(11.02)
- + 大专生参加达内C++培训,获10K高薪任职C++工程师开启职场生涯(10.24)
- + 达内南京C++培训怎么样?(10.17)
- + 南京C++培训实现人才与企业双对接(09.28)