c++ 之 拷贝(复制)构造函数与运算符 = 重载笔记

c++ 之 复制(拷贝)构造函数

函数释义:复制构造函数顾名思义,是一种比较特殊的构造函数,可以将已创建的对象 中的资源 复制 到一个新创建的对象中,即复制对象(深拷贝)。复制构造函数通常用于

  1. 通过使用另一个同类型的对象来初始化新创建的对象。
  2. 复制对象把它作为参数传递给函数。
  3. 复制对象,并从函数返回这个对象。

举例:

class graph
{
public:
graph(in side); // 简单的构造函数
graph( const graph &obj); // 复制构造函数参数一般为构造函数创建的对象 。
~Graph(); // 析构函数
private:
int *ptr;
}; // 成员函数定义,包括构造函数

graph::graph(int side) //构造函数
{
cout<<“构造函数调用”< ptr = new int;
*ptr = side;
}

graph::graph(const graph &obj)
{
cout<<“复制构造函数调用”< ptr = new int;
*ptr = *obj.ptr; // 拷贝值
}
graph::~Graph()
{
*ptr=null;
delete ptr;
}
int main()
{
graph g1(3);
graph g2=g1; //调用复制构造函数
//displayg1,g2
return 0;
}

复制构造函数和运算符 = 重载区别:

1 调用

复制构造函数上面已说过:
graph g1(3);
graph g2=g1; //调用复制构造函数

重载等号
graph g1(3);
graph g2;
g2=g1; //调用等号重载

2 深浅拷贝

这是我在研究复制构造函数和运算符 = 重载时所补知识,两者所用正是深拷贝和浅拷贝。

深拷贝与浅拷贝区别:
深拷贝创建新对象包含所有对象成员并进行复制
比如对象有一个指针,深拷贝会创建新对象带有一个新的指针,将指针内容拷贝
浅拷贝指当对象的字段值被复制时,字段引用的对象不会被复制
比如对象有一个指针,浅拷贝引用对象指针,使两个对象使用一个指针

你可能感兴趣的:(c++基础知识,c++)