1.請給出下面物件建立過程中涉及的方法列印
{public:
test(int a=5, int b=5):ma(a), mb(b)
{cout<<"test(int, int)"《答案:
列印結果:
test(int, int)//呼叫帶兩個引數的建構函式生成t1物件
test(int, int)//呼叫帶兩個引數的建構函式生成t5物件
test(int, int)//呼叫帶兩個引數的建構函式生成t2物件
test(const test&)//呼叫拷貝建構函式生成t3物件
test(int, int)//呼叫帶兩個引數的建構函式生成t4物件
test(int, int)//呼叫帶兩個引數的建構函式顯示生成t2臨時物件 此時並沒有新物件生成 無優化 呼叫臨時物件的建構函式
operator=//呼叫賦值運算子過載函式
~test()//遇上表示式結束 臨時物件銷毀 呼叫析構函式
test(int, int)// 逗號表示式 取50 呼叫帶兩個引數(另乙個引數為預設值)的建構函式顯示生成t2臨時物件 此時並沒有新物件生成 無優化 呼叫臨時物件的建構函式
operator=//呼叫賦值運算子過載函式
~test()//遇上表示式結束 臨時物件銷毀 呼叫析構函式
test(int, int)//呼叫帶兩個引數的建構函式隱式生成t2臨時物件 此時並沒有新物件生成 無優化 呼叫臨時物件的建構函式
operator=//呼叫賦值運算子過載函式
~test()//遇上表示式結束 臨時物件銷毀 呼叫析構函式
test(int, int)//new建立了新物件 從new到delete結束 呼叫建構函式 p1
test(int, int)//呼叫建構函式 new了乙個陣列 每個物件生成都會呼叫建構函式 所以這裡呼叫兩次建構函式 p2
test(int, int)//同上 陣列 p2
test(int, int)//取了臨時物件的位址賦給指標p3 指標不會提公升臨時物件生存週期 引用才會提公升 呼叫建構函式 p3
~test()//臨時物件遇見表示式結束銷毀 呼叫析構函式 p3
test(int, int)//引用了這個臨時物件 引用提公升了臨時物件的生存週期 此時只有臨時物件的建構函式 析構暫時沒有 p4
~test()//new了就得delete 銷毀p1所指向的記憶體 是物件記憶體 銷毀資源 呼叫析構函式 p1
~test()//p2指向了物件的陣列 會呼叫兩次析構函式
~test()//同上 陣列銷毀 p2
~test()//p4引用的臨時物件銷毀 呼叫析構函式
~test()//t3銷毀 呼叫析構函式
~test()//t2銷毀 呼叫析構函式
~test()//t4銷毀 呼叫析構函式
~test()//t5銷毀呼叫析構函式
~test()//t1銷毀 呼叫析構函式
2.請寫出下面程式執行時方法涉及的列印資訊
class test
{public:
test(int a=5):ma(a){cout<<"test(int)"《答案:
列印結果:
test(int)//呼叫乙個整形引數的建構函式生成物件t1
test(int)//呼叫乙個整形引數(預設值)的建構函式生成物件t2
test(int)//呼叫乙個整形引數的建構函式生成tmp物件
test(const test&)//return時會有臨時物件生成 拿乙個已存在的物件生成新物件 呼叫拷貝建構函式生成臨時物件
~test()//tmp物件的銷毀
operator=//拿臨時物件給t2賦值 呼叫賦值運算子的過載函式
~test()//臨時物件銷毀
20//列印t2 getvalue的值
~test()//析構t2物件銷毀
~test()//析構t1物件銷毀
c 類物件的生存週期
在這裡我們會通過乙個例子來給大家解釋說明 include using namespace std class test public test int a 5,int b 5 ma a mb b cout 1 因為物件t1處於全域性中,所以t1最先被構造,呼叫建構函式 2 由於物件t5 也處於全域性...
物件的生存週期
在學習析構函式時,了解到一般物件的銷毀是在main函式內return之後。在棧上構造的物件要符合棧的先進後出的規則。堆上new的物件需要遇到delete的時候才能銷毀,否則會出現記憶體洩漏。所以一般的物件生存週期為定義點開始,return之後main函式退出之前結束。對於特殊的物件,總結如下 1 全...
Python物件導向02 類和物件
類和物件是物件導向程式設計的 兩個 核心概念 類就相當於製造飛機時的圖紙,是乙個模板,是負責建立物件的 物件就相當於用圖紙製造的飛機 在程式開發中,應該先有類,再有物件 類中定義了什麼屬性和方法,物件中就有什麼屬性和方法,不可能多,也不可能少在使用面相物件開發前,應該首先分析需求,確定一下,程式中需...