1樓:魚死吾蒸
首先,建構函式是在物件建立時執行,而解構函式是在物件消亡時執行的,也就是說,你在new一個物件的時候就執行了建構函式,delete的時候就執行了解構函式....
其次,c++特有的new和delete就是為確保構造和解構函式能夠準確執行才創造的,而你用c語言的malloc和free那就不能確保構造和析構的發生了.....
const char * getfirstname()const;
前面一個const表明其返回值內容不可改變,並且只能用const char*型別來進行接收,例如如下語句將出現編譯錯誤:
char* str = e1ptr->getfirstname();
正確的寫法是:
const char* str = e1ptr->getfirstname();
而後面一個const表明傳進來的引數將不會被改變,如:
void test(int& a) const
而引數為空則沒有什麼實際的意義
不過作為一種程式設計師的良好習慣,在函式不會改變形參的情況下儘量在函式後面跟上const,告訴有可能使用你類的其他程式設計師這個函式的傳參安全性...
2樓:傲世修羅王
解釋的很好,但是有一個地方不妥
而後面一個const表明傳進來的引數將不會被改變,如:
void test(int& a) const這裡的const表明該函式不會修改類的成員,而不是保證引數不變,如果想要保證引數不變,應該將引數宣告為const
c++關於解構函式的幾個問題
3樓:木有想到
你這個問題很多,不是一句兩話說的清的。是最基本的建構函式,copy建構函式,賦值(構造)函式及解構函式的理解淺的問題。
#include
using namespace std;
template
class mycontainer
mycontainer(t* b) : mycontainer()mycontainer(const mycontainer& b) : mycontainer()
void print()
~mycontainer()
private:
t* a;
};int main()
;mycontainerdata;
// data.a已經被析構
data.print();
cin.get();
return 0;
}要完成你想要的功能,需要增加如下**
mycontainer& operator = (const mycontainer& b)
c 關於解構函式的問題,C 關於解構函式的一個問題
如果你的物件在複製的時候不適合淺複製,而且整個過程中你也不需要對它進行復制,那麼一個比較好的方法就是寫一個複製建構函式 mystring const mystring 然後不實現。沒錯就是隻寫這麼一個宣告放那邊。如果程式中用到了複製構造,那麼連結的時候就會報錯,可以幫助你遠離深複製淺複製的問題。另 ...
類的那一章中,解構函式是以類名加來命名,可是在編的時候波浪號老是在上方,用軟鍵盤也不對,該怎麼輸入
字型的問題,不是什麼大問題,換宋體看下 就是shift 1前面那個鍵的那個 不用管在上方還是下方。不會呀!不會在上方呀!c 中解構函式是上波浪還是中波浪?怎麼打出來?c 解構函式就是波浪鍵加類建構函式。鍵即鍵盤上的shift 鍵。具體是上波浪還是中波浪可能因文字編輯器的不同而導致打出來的顯示效果不同...
C中,有關呼叫外部類函式的問題
模板類的宣告和函bai數體必須都放在du標頭檔案中。zhi否則編譯器在實體 dao化的時候沒辦法根 內據模板引數來 容確認實體部分的 這是規則。如果您不想把模板類的定義放在標頭檔案,那麼唯一的方法就是把模板類定義 實體 使用者都放進file2.cpp。c 怎麼類外定義模板類的成員函式?模板引數怎麼呼...