拷贝构造函数发生在对象还没有创建,需要创建时
创新互联建站是一家专业提供栾川企业网站建设,专注与网站制作、成都网站制作、H5场景定制、小程序制作等业务。10年已为栾川众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
如: 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++中赋值函数和拷贝构造函数(举例说明)
文章转载:https://www.cdcxhl.com/article24/iiecce.html
成都网站建设公司_创新互联,为您提供网站维护、全网营销推广、网站策划、网站建设、品牌网站设计、动态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联