复制构造函数和赋值操作符
2014-09-03 10:12
232 查看
#include <iostream> #include <string> #include <vector> using namespace std; class Sales_item { public: Sales_item():units_sold(0),revenue(0.0){} Sales_item(const std::string& book) :isbn(book),units_sold(0),revenue(0.0){} //没写默认创建 //复制构造函数 //当一个类 有指针 动态分配内存的时候 必须自己写 Sales_item(const Sales_item& orig) :isbn(orig.isbn),units_sold(orig.units_sold),revenue(orig.revenue){} //重载赋值操作符 Sales_item& operator=(const Sales_item& rhs) { isbn=rhs.isbn; units_sold=rhs.units_sold; revenue=rhs.revenue; return *this; } private: std::string isbn; unsigned units_sold; double revenue; }; Sales_item foo(Sales_item item) { Sales_item temp; temp=item; return temp; } //指针情况 class PointTest { public: PointTest(const PointTest& other) :ps(new std::string(*(other.ps))),i(other.i),d(other.d){} PointTest& operator=(const PointTest& rhs) { ps=new std::string; *ps=*(rhs.ps); i=rhs.i; d=rhs.d; return *this; } private: std::string *ps; int i; double d; }; int main() { Sales_item a; Sales_item b("0-123456-000"); Sales_item c(b); a=c; Sales_item d=string("01234-394-001");//调用了的是构造函数 //默认构造函数-复制构造函数-默认构造函数-赋值构造函数-复制构造函数-赋值构造函数 Sales_item ret; ret=foo(d); vector<Sales_item> svec(5);//默认构造 5次复制构造函数 // Sales_item prim[]={string("000123"),string("00000888"),string("00009999")}; return 0; }
相关文章推荐
- 复制构造函数与赋值操作符之间的区别
- C++技术感想 -- 禁止类的复制构造函数和赋值操作符的使用
- C++中自定义类禁止使用复制构造函数和赋值操作符
- 复制构造函数、析构函数、赋值操作符缺少其一的后果
- 复制构造函数、赋值操作符与隐式类类型转换
- C++ 复制构造函数和赋值操作符
- 【C\C++学习】之十八、C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
- 析构函数、赋值操作符与复制构造函数关系的分析
- 复制构造函数与赋值操作符之间的区别
- 复制构造函数和赋值操作符
- 复制构造函数或赋值操作符
- 重温C++ primer 之复制控制(复制构造函数,赋值操作符,析构函数)
- C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
- 复制构造函数和赋值操作符的注意点.
- 13.1——复制构造函数,赋值操作符,析构函数
- 复制构造函数,赋值操作符、关系操作符,const函数
- C++学习基础六——复制构造函数和赋值操作符
- [C++]复制构造函数、赋值操作符与隐式类类型转换
- 复制构造函数 赋值操作符
- 赋值操作符与复制构造函数