712堆对象局构造晶数 通过new建立的对泉要调用构造函数, 通过 delete删除对泉也要调用析构函数。 函数可以 ,所以 eW后面类 )类型也可以有参数。 参数即物 的参数。但对创理 参数, 调用缺一的构 DU
7.1.2 堆对象与构造函数 通过new建立的对象要调用构造函数, 通过deletee删除对象也要调用析构函数。 正因为构造函数可以有参数,所以 new后面类(class)类型也可以有参数。 这些参数即构造函数的参数。但对创建数 组,则无参数,并只调用缺省的构造函数
712堆对象局构造晶数 如有 class Goods{ char Name[211 int Amount float price: float Total value; public CGoodsotSi CGoods(char* name int amount float price strcpy(Name, name); Amount=amount Price=price; Total_ value=price*amount; y DU }
7.1.2 堆对象与构造函数 如有 class CGoods{ char Name[21]; int Amount; float Price; float Total value; public: CGoods(){}; CGoods(char* name,int amount ,float price){ strcpy(Name,name); Amount=amount; Price=price; Total_value=price*amount; } … … }
712堆对象局构造晶数 void main(t int n; CGoods *pc, pc1, *pc2 pc= new GOods(“夏利2000”,10,118000) pc1= new GOods;/调用缺省构造函数; cout<<输入商品类数组元素数’<<end cIn>>ni pc2=new GOods[n]; delete pc; delete pcl; delete [pci } DU
7.1.2 堆对象与构造函数 void main(){ int n; CGoods *pc,*pc1,*pc2; pc=new CGoods(“夏利2000” ,10,118000); pc1=new CGoods(); //调用缺省构造函数; cout<<’输入商品类数组元素数’<<endl; cin>>n; pc2=new CGoods[n]; …… delete pc; delete pc1; delete []pc2; }
712堆对象局构造晶数 这里再次强调:由堆区创建对象数 组。只能调用缺省的构造函数。不能调 用其他任何构造函数。如果没有缺省的 构造函薮,则不能创建对象数组。 DU
7.1.2 堆对象与构造函数 这里再次强调:由堆区创建对象数 组,只能调用缺省的构造函数,不能调 用其他任何构造函数。如果没有缺省的 构造函数,则不能创建对象数组
713拷贝与深拷贝 缺省拷贝构造函数,可用一个类对象初始化另一个类对象, 称为缺省的 而不是对整个类对象的 贝。这称为 浅拷贝 堆对 堆对 象 图71浅拷贝 DU
7.1.3 浅拷贝与深拷贝 缺省拷贝构造函数,可用一个类对象初始化另一个类对象, 称为缺省的按成员拷贝,而不是对整个类对象的按位拷贝。这称为 浅拷贝。 P 堆 对 象 堆 对 象 P P 图7.1 浅拷贝