類成員變數初始化

2021-09-26 23:20:12 字數 789 閱讀 3138

在 c++ 中,類的成員變數未初始化問題,取決於物件建立方式,不同的建立方式,直接導致類成員變數的初值不同。

本文通過下例,得出一下結論:

1.在函式體內置立乙個物件,類成員變數和普通的區域性變數一樣,是乙個隨機值。

2.建立乙個全域性成員物件,類成員變數和全域性變數一樣,編譯器賦值為 0。

3.在函式體內 new 出乙個物件,在不同的編譯器下,結果不同

3.1 在 windows vs 下,仍未隨機值,不可靠

3.2 在 linux 下,初值為 0

當然上述全部是在未初始化時的情況,對於普通的類成員變數初始化既可以直接賦值也可以用建構函式的初始化列表賦值

除此之外還有幾個比較基礎的問題簡單提一下:

1.static 成員變數在類內宣告,必須在類外初始化(定義,即分配記憶體)

2.const 成員變數,必須通過建構函式的初始化列表來初始化

3.引用成員變數同 const 一樣,必須奧在初始化列表中初始化

下例為,普通類成員變數未初始化時的情況

#include class a

;a::a()

a::a(int num):_num(num)

a::a(int a, int b):_num1(a), _num2(b)

a::~a()

int main()

linux 結果:

vs 結構:

類成員變數初始化位置

1.簡述 類的成員變數多種多樣,比如 int a,const int a,int a,static int a,static const int a,statice int a。前面三個分別是普通變數 const變數和引用變數,後面的三個是前面三個分別加上了static。本文主要分析這六種變數初始化...

類成員初始化

在類內部 初始化的順序 靜態的成員變數 普通的成員變數 構造器的呼叫。在派生類中 初始化的順序 呼叫基類的構造器 按宣告順序呼叫成員的初始化方法 呼叫派生類構造器主體 大多數類的初始化都是按照這些順序結合在一起的。下面是乙個例子 public class test extends sub publi...

類成員初始化

一 預設呼叫的無參建構函式 include include using namespace std class studentid class student int main 8 91011class student 20 2122 intmain 執行結果 重新設計建構函式,對s物件進行初始化,...