C++拷贝构造函数语意学 copy constructor(The Semantics of Constructors)

本文详细介绍了C++中拷贝构造函数的三种应用场景:显式使用、作为函数参数和函数返回值。同时,讨论了默认逐位初始化、不位逐次拷贝的情况。在没有显式定义拷贝构造函数时,编译器会进行默认逐位初始化,而当类包含特定成员(如带有拷贝构造函数的成员对象、继承自有拷贝构造函数的基类、声明了虚函数或拥有虚拟基类)时,编译器则会合成不位逐次拷贝的构造函数,确保正确复制对象状态。
摘要由CSDN通过智能技术生成

使用copy constructor的三种情况

有三种情况,会以一个object的内容作为另一个class object的初值。
1.显式的以一个object的内容作为另一个class object的初值

class X{......};
X x;
X xx = x;

2.当object被当做参数交给某个函数时

void foo(X x);
void bar(){
    X xx;
    foo(xx);
}

3.当函数传回一个class object时

X foo(){
    X xx;
    return xx;
}

Explicit Copy Constructor

用户显式定义的copy consyructor大部分情况下以另一个同类实例作为初值。
如:

X::X(const X& x);
Y::Y(const Y& y,int = 0);

并注意传入参数必须是reference的
因为如果定义如下copy consyructor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值