[問題] 回傳物件 codeblock編譯問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
win7 codeblock_10.05
問題(Question):
回傳物件,其值不同
餵入的資料(Input):
new出兩個新物件回傳
程式碼(Code):(請善用置底文網頁, 記得排版)
我有一個main.cpp和三個分開寫的class, .h和.cpp 共7個檔案簡短大概如下
class A{
public:
A();
int getID();
private:
int id; //建構子預設23
}
-----------------------------------
class B: public A {
}//空的內容
-----------------------------------
class Foo{
public:
A* createObject(int);
}
-----------------------------------
int main() {
Foo factory;
A* aaa1 = new B ;
A* aaa2 = factory.createObject(2); //new出一個物件並回傳
cout << aaa1->getID() << endl ;
cout << aaa2->getID() << endl ;
return 0;
}
我在下面switch中new出物件並回傳後
A* Foo::createObject(int a) {
switch (a) {
case 2:
return new B;
default:
//return new B;
break;
}
}
其最後印出來兩個值的結果是不一樣的,debug好久又去找VS來試
嘗試之後,發現是否全部的條件判斷後都有回傳東西有差
codeblock_10.05 VS2010
結果 不一樣 ex:23 80 一樣 ex:23 23
拿掉return 一樣 一樣
的註解後
另外我把所有內容全寫進一個main.cpp中就沒有出現這問題
請教前輩,為什麼會這樣? 是我寫法不夠嚴謹的關係還是編譯器無法處理這事?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.145.126
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1448552297.A.4C6.html
推
11/27 00:26, , 1F
11/27 00:26, 1F
推
11/27 03:00, , 2F
11/27 03:00, 2F
→
11/27 03:00, , 3F
11/27 03:00, 3F
→
11/27 03:01, , 4F
11/27 03:01, 4F
→
11/27 03:02, , 5F
11/27 03:02, 5F
→
11/27 03:03, , 6F
11/27 03:03, 6F
→
11/27 09:00, , 7F
11/27 09:00, 7F
推
11/27 15:03, , 8F
11/27 15:03, 8F
→
11/27 16:50, , 9F
11/27 16:50, 9F
→
11/27 16:54, , 10F
11/27 16:54, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章