<pre name="code" class="cpp"># include<iostream>
using namespace std;
class demo
{
public:
demo(){x=0;cout<<"demo的默认构造函数!"<<x<<endl;}
demo(int i){x=i;cout<<"demo的带一个参数的构造函数!"<<x<<endl;}
~demo(){cout<<"demo的默认析构函数!"<<x<<endl;}
int get(){return x;}
void set(int i){x=i;}
private:
int x;
};
class rectangel
{
public:
rectangel(){x=1000;cout<<"rectangel的默认构造函数!"<<x<<endl;}
rectangel(int i,int j,int k):x(i),width(j),length(k)
//由于有两个demo类的对象,因此调用了两次带一个参数的构造函数
//rectangel(100,200,300);会把100、200、300的一一传递给i、j、k.但是其构造顺序是按着私有成员变量的顺序输出的,先输出length之后是width,并不是按着初始化列表。
//构造函数的初始化顺序是按着成员列表的顺序进行的。
{
cout<<"rectangel的带三个参数的构造函数!"<<"长方形b的面积为:"<<length.get()*width.get()<<endl;
cout<<length.get()<<endl;
cout<<width.get()<<endl;
}
~rectangel(){cout<<"rectangel的默认的析构函数!"<<x<<endl;}
//析构函数的顺序正好和构造函数相反,哪个先构造就最后析构,后构造的最先析构。
private:
int x;
demo length;
demo width;
};
int main()
{
rectangel(100,200,300);
return 0;
}
运行结果:
# include<iostream>
using namespace std;
class A
{
public:
A(int a,int b):num(a),total(b){};
//A(int a,int b){num=a;total=a;}
//用下面的语句,系统会报错。
private:
const int num;
int &total;
//引用和const成员函数不能被赋值.
};
int main()
{
A a(3,4);
return 0;
}