当前位置:编程学习 > C/C++ >>

C++复习笔记---浅谈拷贝构造函数和赋值构造函数

1.拷贝构造函数的形式
对于类X,如果它的函数形式如下
a) X&
b) const X&
c) volatile X&
d) const volatile X&
且没有其他参数或其他参数都有默认值,那么这个函数是拷贝构造函数
X::X(const X&);是拷贝构造函数
X::X(const X&,int val = 10);是拷贝构造函数
 
2.一个类中可以存在超过一个拷贝构造函数
class X {     
public:     
  X(const X&);     
  X(X&);            // OK  
};
编译器根据实际情况调用const拷贝构造函数或非const的拷贝构造函数
 
3.默认的拷贝构造函数行为
a)先调用父类的拷贝构造函数
b)如果数据成员为一个类的实例,则调用该类的拷贝构造函数
c)其他成员按位拷贝
 
4.默认的赋值构造函数行为
a)先调用父类的赋值构造函数
b)如果数据成员为一个类的实例,则调用该类的赋值构造函数
 c)其他成员按位拷贝  www.zzzyk.com
 
5.提供显示的拷贝和赋值构造函数
基本的原则是子类一定要调用父类的相应函数,参考方式
Derive(const Derive& obj):Base(obj)
{
…...
}
 
Derive& operator =(const Derive &obj)
{
if ( this == &obj )
return *this;
 
//方式一
Base::operator =(obj);
 
//方式二
static_cast<Base&>(*this) = obj;
return *this;
}

另外当你的成员变量有const或者引用,系统无法为你提供默认的拷贝和赋值构造函数,我们必须自己处理这些特殊的情况

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,