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