C++函数周期

C++中的函数周期,类Good形式如下:

class Good
{
 public:
	Good(char* name= NULL,float price = 0);//默认构造函数
	~Good();//析构函数 
	Good(Good &);//拷贝构造函数 
	void operator =(Good t);//赋值运算符 
private:
	char* name;
      float price;
};

在类实例化对象时,需要注意以下两个问题

1.“类名+对象名+()” 并非实例化而是函数声明

Good G3();//函数声明
2.逗号表达式
Good *P = (Good)("b","a");//相当于调用构造函数 Good("a");

Good _G1(10,10);//全局变量在代码段,首先调用构造,最后调用析构函数
int main()
{
	Good G1(10,10);//由于函数顺序调用,先构造的后析构,后构造的先析构
	Good G2 = G1;//调用拷贝构造函数
	//Good G3();//函数声明
	static Good G4 = Good("iphone",1);//代码进行优化,Good G4("iphone",1),程序结束时析构
	G4 = Good("ipad",2);//生成临时对象,在该行代码结束时析构
	G4 = (Good)("huawei","samsung");//("huawei","samsung")为逗号表达式,调用Good("samsung"),生成临时对象
	G4 = "xiaomi";//编译器检查类型不匹配,生成临时对象,调用赋值运算符重载函数

	Good *G5 = Good("vivo",10);//生成临时对象,语句结束时析构
	Good &G6 = Good("oppo",11);//引用会使临时量的生存周期边长,与引用同时销毁
	Good *G7 = new Good();
}
Good _G2;//第二个被调用,倒数第二个被析构
综上所述,全局对象最先调用最后析构,函数内部依序构造,逆序析构,静态对象在程序结束时析构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值