Re: [問題] C++宣告物件的問題

看板C_and_CPP作者 (Ronald)時間12年前 (2012/01/23 13:46), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《yaushung (Ronald)》之銘言: : 標題: [問題] C++宣告物件的問題 : 時間: Sun Jan 22 22:28:34 2012 : : 開發平台(Platform): VC++ : : : 問題(Question): : : 定義一個類別 : class Test { : public: : Test(); : Test(int); : } : : 宣告時用 : Test t1(10); : Test t2 = Test(10); : 都可以 : : 問題是 : 我今天會需要先判斷執行的需求 : 決定該使用哪種方法宣告(帶一個參數或是不帶參數) : 我試了像是 : Test t3 = NULL; : t3 = Test(10); : 卻會在執行時發生執行時期的錯誤 : 想請問我的需求應該怎麼去實現呢 : : 謝謝 : : -- : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.162.141.236 : → uranusjr:Test t3 = NULL; <-- NULL 不是 Test 的 instance 啊! 01/22 22:42 : → uranusjr:最簡單的解決方法就是用指標吧 01/22 22:43 我試了下面用法會有執行時期的錯誤 Test *t3 = NULL; *t3 = Test(10); 是否可以麻煩給個使用指標方法的範例呢? : 推 lausai:Test t3 = (if use argument) ? (Test(arg)) : (Test()); 01/22 22:55 : → lausai:這樣可以嗎@@? 01/22 22:56 這個可以耶 可是這跟我原本寫法有本質上的不同嗎 不太能理解這個可以但我原本寫法卻不行的差異 : → loveme00835:default ctor初始化時是否是將某數值寫死? 另一個ctor 01/22 23:27 : → loveme00835:只是該數值可變? 01/22 23:28 : 推 softwind:Test t3=NULL;// 先ctor然後是operator=跳call copy ctor 01/23 01:54 : → softwind:NULL在轉型的過程中 會實體化call ctor... 01/23 01:55 不是很懂這意思...可以詳細說明嗎 : 推 lmr3796:Test t3;等到要用的時候再t3=Test(10);或另一個呢? 01/23 01:55 試了 ... 這樣編譯時期就會遇到錯誤 : → james732:為什麼會發生執行期的錯誤…? 01/23 02:22 : 推 ah7675:感覺像是Java移過來的寫法? 還是乖乖用指標吧@@" 01/23 02:32 會想這樣寫確實是延續Java的習慣... 不是很了解這部分用指標該怎麼做 以上問題再麻煩大家協助解答了 謝謝 :) -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.114.237.247

01/23 14:45, , 1F
Test *t3 = NULL;
01/23 14:45, 1F

01/23 14:45, , 2F
t3 = new Test(10);
01/23 14:45, 2F

01/23 14:45, , 3F
// Use t3...
01/23 14:45, 3F

01/23 14:46, , 4F
delete t3; // When you don't need t3 anymore
01/23 14:46, 4F

01/23 15:56, , 5F
你可以把 Java 的"參考"想成這裡的"指標"來用
01/23 15:56, 5F

01/23 15:57, , 6F
(只是要記得加上手動清除用過的物件的程式碼就是了)
01/23 15:57, 6F

01/23 16:47, , 7F
請問為啥 exp?T(arg1):T() 的寫法不對?
01/23 16:47, 7F

01/23 22:52, , 8F
我把你的code拿來try VC2008是OK的~ 請問你的error code?
01/23 22:52, 8F
文章代碼(AID): #1F7FH83u (C_and_CPP)
文章代碼(AID): #1F7FH83u (C_and_CPP)