C++:建構函式的分類和呼叫
建構函式的分類和呼叫
//每日心得:獨上高樓,望盡天涯路
//日期:12.13
//學習內容:建構函式的分類和呼叫
//重點:
//兩種分類方式:
//按引數分為:有參構造 和 無參構造
//按型別分為:普通構造 和 複製構造
//三種呼叫方式:
//括號法 顯示法 隱式轉化法
#include <iostream>
using namespace std;
//建構函式的分類及呼叫
//分類
//按引數分為:有參構造 和 無參構造
class Person
{
public:
//建構函式(不寫返回值)
Person()
{
cout << "Person 的無參建構函式(預設建構函式)呼叫" << endl;
}
Person(int a)
{
cout << "Person 的有參建構函式呼叫" << endl;
age = a;
}
//複製建構函式
Person(const Person& p)// const -> 函式內不改變傳入的本體 ;& -> 傳入實參本體
{
//將傳入的人身上的 部分屬性 ,賦值到返回值身上
age = p.age;
cout << "Person 的有參建構函式呼叫" << endl;
}
~Person()
{
cout << "Person 的解構函式呼叫" << endl;
}
private:
int age = 0;
};
void test1()
{
//1、括號法
cout << "p 的";
Person p; //預設建構函式呼叫
cout << "p1 的";
Person p1(20); //有參建構函式呼叫
cout << "p2 的";
Person p2(p1);// 複製建構函式呼叫
//注意事項:
//呼叫預設建構函式時,不要加() 如:Person p(); -> 會使編譯器認為這是一個函式宣告
}
void test2()
{
//2、顯示法
cout << "p3 的";
Person p3 = Person(10); //有參構造
cout << "p4 的";
Person p4 = Person(p3); //複製構造
//Person(10); //匿名物件 vs 2019 報錯 建立後立刻銷燬
//cout << "前面是一條銷燬資訊" << endl;
//不要利用複製建構函式 初始化 匿名物件 編譯器會認為是 Person (p3) -> Person p3 物件宣告
//Person(p3); //重定義
}
void test3()
{
//3、隱式轉化法
Person p5 = 10; // 相當於 寫了 Person p5 = Person (10);
Person p6 = p5; // 相當於 寫了 Person p6 (p5);
}
//呼叫
int main()
{
//最好用括號法
test1();
test2();
test3();
return 0;
}
相關文章
- 再論C++建構函式分類和呼叫時機以及匿名物件C++函式物件
- 在 C++ 中子類繼承和呼叫父類的建構函式方法C++繼承函式
- 在C++中子類繼承和呼叫父類的建構函式方法C++繼承函式
- C++ 類建構函式和解構函式C++函式
- [C++]顯示呼叫建構函式和解構函式C++函式
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- 類的建構函式和解構函式函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- C++ 建構函式和解構函式C++函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- C++ 類中呼叫基類帶引數建構函式以及常量如何初始化C++函式
- 建構函式之間的呼叫函式
- 【C++】建構函式C++函式
- C++建構函式C++函式
- c# tcbs之建構函式呼叫建構函式示例C#函式
- 父類和子類的建構函式問題函式
- Java的預設建構函式呼叫Java函式
- C/C++——建構函式、複製建構函式和解構函式的執行時刻C++函式
- C++ 類建構函式初始化列表介紹C++函式
- C++入門記-建構函式和解構函式C++函式
- C++建構函式解構函式的執行過程C++函式
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- C++物件導向程式設計 類和物件提高篇 建構函式C++物件程式設計函式
- C++箴言:避免解構函式呼叫虛擬函式C++箴言函式
- JS 建構函式與類JS函式
- 【C++】類初探常量成員函式與建構函式初始值列表C++函式
- C++複製建構函式C++函式
- c++建構函式詳解C++函式
- 類的陣列初始化後會呼叫拷貝建構函式陣列函式
- 19-父類的建構函式函式
- flutter-dart 類的建構函式FlutterDart函式
- c++ 的學習 建構函式1C++函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- C++再議建構函式及複製建構函式深度複製C++函式
- c++建構函式詳解薦C++函式
- 《高質量C++/C程式設計指南》第9章:類的建構函式、解構函式與賦值函式C++C程式程式設計函式賦值
- es5建構函式,es6類和類的繼承函式繼承
- 建構函式,拷貝賦值函式的N種呼叫情況函式賦值