C Record20 建構函式的呼叫規則

2021-10-02 08:08:18 字數 938 閱讀 6250

目錄

基本概念

二個特殊的建構函式

呼叫規則

涉及**

寫在前面:本篇部落格所提到的賦值建構函式等同於拷貝建構函式及複製建構函式

1)預設無參建構函式

當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且其函式體為空

2)預設拷貝建構函式

當類中沒有定義拷貝建構函式時,編譯器預設提供乙個預設拷貝建構函式,簡單的進行成員變數的值複製

1)當類中沒有定義任何乙個建構函式時,c++編譯器會提供預設無參建構函式和預設拷貝建構函式

2)當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式

3) 當類中定義了任意的非拷貝建構函式(即:當類中提供了有參建構函式或無參建構函式),c++編譯器不會提供預設無參建構函式

4 )預設拷貝建構函式成員變數簡單賦值

總結:只要你寫了建構函式,那麼你必須用。

dm08_構造函式呼叫規則研究.cpp

#include using namespace std;

class test

// test(int _a, int _b)

//

test()

void printt()

protected:

private:

int a;

int b;

};//當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式

//當類中定義了有引數建構函式是,c++編譯器不會提供無引數建構函式

//在定義類時, 只要你寫了建構函式,則必須要用

void main81()

3 6 構造中調虛函式

include using namespace std class a361 建構函式中呼叫虛函式是直接呼叫a361的func 不會走虛函式表 virtual a361 virtual void func 非建構函式,若此函式在a361建構函式中呼叫,那麼還是按在建構函式中呼叫一樣的規則,不會走虛函...

C Record34 繼承中的構造和析構

目錄 型別相容性原則 繼承中的物件記憶體模型 繼承中的構造析構呼叫原則 繼承中的構造析構呼叫順序原則 總體 型別相容規則是指在需要基類物件的任何地方,都可以使用公有派生類的物件來替代。通過公有繼承,派生類得到了基類中除建構函式 析構函式之外的所有成員。這樣,公有派生類實際就具備了基類的所有功能,凡是...

C explicit禁止單參建構函式隱式呼叫

c 中單引數建構函式是可以被隱式呼叫的,主要有兩種情形會隱式呼叫單引數建構函式 1 同型別物件的拷貝構造 即用相同型別的其它物件來初始化當前物件。2 不同型別物件的隱式轉換。即其它型別物件隱式呼叫單引數拷貝建構函式初始化當前物件。比如a a 1 就是隱式轉換,而不是顯示呼叫建構函式,即a a 1 像...