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;//第二个被调用,倒数第二个被析构
综上所述,全局对象最先调用最后析构,函数内部依序构造,逆序析构,静态对象在程序结束时析构。

发布了26 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Teemo_king/article/details/79176302
今日推荐