同一个类的对象在内存中有相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程需要拷贝数据成员,而函数成员是共用的。在建立对象时可用同一类的另一个对象来初始化该对象的存储空间,这时所用的构造函数称之为拷贝构造函数。
拷贝构造函数的参数采用引用的方式。
注:若不加引用,会发生实参到形参的拷贝操作,会造成死递归。
class CGoods
{
private:
char Name[21];
int Amount;
double Price;
double Total_value;
public:
CGoods(const char* name, int amount, double price, double value);
CGoods(const CGoods& cs)
{
strcpy_s(Name, cs.Name);
Amount = cs.Amount;
Price = cs.Price;
Total_value = cs.Total_value;
}
void Show()
{
cout << Name << " " << Amount << " " << Price << " " << Total_value << " " << endl;
}
};
CGoods::CGoods(const char* name, int amount, double price, double value)
{
strcpy_s(Name, name);
Amount = amount;
Price = price;
Total_value = value;
}
int main()
{
CGoods C1("zhangsan", 100, 12.3, 1234.5);
C1.Show();
CGoods C2(C1);
C2.Show();
return 0;
}
?
?
?
如果在类中没有给出显示的拷贝构造函数时,则C++编辑器自动给出一个缺省的拷贝构造函数。?
class Object
{
private:
int num;
double val;
public:
void Show()
{
cout << num <<" "<<val<< endl;
}
~Object() {};
};
int main()
{
Object Ob1;
Ob1.Show();
Object Ob2(Ob1);
Ob2.Show();
return 0;
}
?
?
|