您的位置:首页 > 其它

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

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: