开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
预期的结果(Expected Output):
1. ObjA
1. ObjC
1. ObjB
1. ObjD
1. ObjE
1. ObjF
2. ObjD
2. ObjF
2. ObjC
2. ObjA
程式跑出的结果(Wrong Output):
1. ObjA
1. ObjB
1. ObjC
1. ObjD
1. ObjE
1. ObjF
2. ObjD
2. ObjC
2. ObjF
2. ObjA
程式码(Code):(请善用置底文网页, 记得排版)
#inlcude <iostream>
#inlcude <string>
using namespace std;
class OB{
public:
string name;
OB(string name){
this->name = name;
cout << "1. " << this->name << endl;
}
~OB(){
cout << "2. " << this->name << endl;
}
};
void func(){
OB ObjD("ObjD");
OB* pObjE = new OB("ObjE");
static OB ObjF("ObjF");
}
OB ObjA("ObjA");
int main(){
OB* pOB = new OB("ObjB");
OB ObjB("ObjC");
func();
retunr 0;
}
补充说明(Supplement):
昨天去桃园某外台商公司面试的题目,
new没有delete会有memory leak我知道,
但目前我好像有两个地方是错的,分别是:
1. 原来静态宣告完object还没construct,
要等到跑到该行时才会真正建立。
2. destruct的时候会先跑local才跑global(包含static)
请问我对错误的理解对吗?谢谢各位。