#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;}