-
分類方式
-
按引數分: 有參構造(默認構造) & 無參構造
-
按型別分: 普通構造 & 拷貝構造
-
呼叫方式
-
括號法
-
顯示法
-
隱式轉換法
PS:下方所有文本均以此代碼為基礎
1 class Person { 2 public: 3 //無參建構式 4 Person() { 5 std::cout << "Person的無參建構式" << std::endl; 6 } 7 //有參建構式 8 Person(int age) { 9 std::cout << "Person的有參建構式" << std::endl; 10 } 11 //拷貝建構式 12 Person(const Person& p) { 13 std::cout << "Person的拷貝建構式" << std::endl; 14 age = p.age; 15 } 16 //解構式 17 ~Person() { 18 std::cout << "Person的解構式" << std::endl; 19 } 20 21 int age;//定義成員屬性 22 };點我查看
括號法呼叫:
語法:
1 類名 物件名; 2 類名 物件名(引數); 3 類名 物件名(參考別名);
示例:
1 int main() { 2 Person p1;//默認建構式呼叫 3 Person p2(10);//有參建構式 4 Person p3(p2);//拷貝建構式 5 return 0; 6 }
運行結果:
1 Person的無參建構式 2 Person的有參建構式 3 Person的拷貝建構式 4 Person的解構式 5 Person的解構式 6 Person的解構式
注意:呼叫默認建構式時,不要加"()",因為編譯器會認為是函式的宣告,不會認為在創建函式
顯示法呼叫:
語法:
1 類名 物件名; 2 類名 物件名 = 類名(引數); 3 類名 物件名 = 類名(參考別名);
示例:
1 int main() { 2 Person p1;//默認建構式呼叫 3 Person p2 = Person(10);//有參建構式 4 Person p3 = Person(p2);//拷貝建構式 5 return 0; 6 }
運行結果:
1 Person的無參建構式 2 Person的有參建構式 3 Person的拷貝建構式 4 Person的解構式 5 Person的解構式 6 Person的解構式
注意:不要用拷貝建構式,初始化匿名物件,編譯器會認為Person (p3)等價于Person p3;(在顯示法呼叫示例中)
補充:顯式呼叫法示例中"Person(10)"為匿名物件,當執行結束后,系統會立即回收
隱式轉換法呼叫:
語法:
1 類名 物件名 = 引數; 2 類名 物件名 = 參考別名;
示例:
1 int main() { 2 Person p1 = 10;//有參建構式 3 Person p2 = p1;//拷貝建構式 4 return 0; 5 }
運行結果:
1 Person的有參建構式 2 Person的拷貝建構式 3 Person的解構式 4 Person的解構式
解釋:隱式轉換法實體中 "Person p1 = 10;"相當于"Person p1 = Person (10);"
2022-06-17 22:42:02
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492406.html
標籤:C++
上一篇:pycharm 常用快捷鍵 提升代碼能力 縮短開發效率
下一篇:c++可視化性能測驗
