#include<iostream>usingnamespace std;classA{int a =0;public:A():a(8){ cout << a;}//非const实例数据成员a,可在函数体内再次对a赋值A(int x):a(x){ cout <<"construct A "<<a;}~A(){ cout <<"Destruct A"<< a << endl;}};classB: A
{//私有继承,等价于class B: private A{int b, c;constint d;
A x, y, z;public:B(int v):b(v),y(b +2),x(b +1),d(b),A(v){//初始化与冒号后出现顺序无关/*
初始化 A(v) x y z 分别输出 1 2 3 8
*/
c = v;//b, c可再次赋值
cout << b << c << d;
cout <<"C"<< endl;}~B(){ cout <<"Desturct B"<< endl;}};intmain(){
B z(1);return0;}
输出结果
construct A 1
construct A 2
construct A 38111C
Desturct B
Destruct A 8
Destruct A 3
Destruct A 2
Destruct A 1
#include<iostream>usingnamespace std;classA{int*s;//有私有实例数据成员,必须定义构造函数public:A(int x){
s =newint[x];}~A(){if(s){delete s;
s =0;//相当于s=NULL}}};intmain(){
A x(3),&r = x;//返回时自动析构x,r共享对象x不负责构造和析构
A &p =*newA(5);//有值引用p被编译成指针,p代表对象 A(5)
A *q =newA(9);//分配一块空间后,构造对象 即s分配一块空间delete&p;// &p 表示取p 引用的对象的地址delete q;//释放对象赵勇空间之前自动调用析构函数释放 sreturn0;}