C++ 成员变量的初始化与构造函数

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值