C++ 复制构造函数和赋值操作符

来源:互联网 发布:unity3d教程pdf 编辑:程序博客网 时间:2024/05/17 04:27

1、如果没有写复制构造函数和赋值操作符,C++会给我们自动写上,一般情况下都能正常工作,但是对于数据成员有指针的情况下,不能正确地复制,就需要手动去写。

2、复制构造函数的形参一般大多数情况都有const,而且必须为引用。

例如:

Sales_item(const Sales_item &orig):isbn(orig.isbn),units_sold(orig.units_sold),revenue(orig.revenue){}

3、赋值操作符

Sales_item& operator=(const Sales_item &rhs)

{

  isbn = rhs.isbn;

  units_sold = rhs.units_sold;

  revenus = rhs.revenue;

  return *this;

}

4、形参和返回值如果不是引用的类型,就会调用拷贝构造函数。

5、vector<Sales_item> svec(5);//先调用一次默认构造函数,再调用五次复制构造函数

6、数组元素是类类型,就会调用普通构造函数。

Sales_item primer_eds[] = {string("0-201"),string("0-202"),string("0-203"),Sales_item()};//都是普通构造函数

7、

class NoName

{

public:

NoName(const NoName& other):pstring(new std::string(*(other.pstring))){}//复制的是指针所指向的值,如果是默认的复制构造函数则会复制指针,因此要自己写

private:

std::string *pstring;

}

0 0