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++】初始化列表建構函式VS普通建構函式C++函式
- C++複製建構函式C++函式
- JS 建構函式與類JS函式
- 類的陣列初始化後會呼叫拷貝建構函式陣列函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- c++ 的學習 建構函式1C++函式
- C++ 移動構造和複製建構函式匹配C++函式
- flutter-dart 類的建構函式FlutterDart函式
- 19-父類的建構函式函式
- 區分:派生類指定基類建構函式、繼承構造、委託構造函式繼承
- 建構函式,拷貝賦值函式的N種呼叫情況函式賦值
- es5建構函式,es6類和類的繼承函式繼承
- C++中函式呼叫的用法C++函式
- 你不知道的JavaScript--Item8 函式,方法,建構函式呼叫JavaScript函式
- C++拷貝建構函式詳解C++函式
- C++型別轉換建構函式C++型別函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- dart系列之:dart類中的建構函式Dart函式
- 迴圈單連結串列建構函式、解構函式C++實現函式C++
- C++——建構函式之初始化列表C++函式
- ES6類和ES5函式建構函式有什麼區別?函式
- 預設建構函式和帶預設值的建構函式不能同時存在函式
- c/c++ 拷貝控制 建構函式的問題C++函式
- c++函式模板和類别範本C++函式
- 建構函式與解構函式函式
- C++之類解構函式為什麼是虛擬函式C++函式