C 中類的資料成員(data member)能出現未初始化(uninitialized)的狀態嗎?

時間 2021-10-21 00:06:46

1樓:

1.如果在乙個函式類定義,那麼在這兩個類裡的資料成員都未初始化,都是不確定的值。如果是在全域性空間定義,那built-in type就是預設值,類就是預設構造的。你可以自己列印出來看看

2.是不是 class type 在進行預設初始化的時候遞迴呼叫父類的建構函式,而且類中的資料成員也按照規則進行初始化

是的,當前類只負責自己部分的資料成員,父類的資料成員交給父類去初始化,規則遵守父類初始化資料成員的初始化規則。

即如果是 built-in type 就初始化為0,如果是 class type 就呼叫預設建構函式這個built-in type不一定就初始化為0,要看你的定義在哪個空間,這個你可以自己寫程式驗證

3.如果類裡沒有其他的建構函式,或者你在呼叫的時候採用預設構造的方法,編譯是會報錯的。

4.一般程式的區域性變數儲存在棧上,動態分配的內存在堆上。

2樓:

如果物件定義在堆上,然後你的建構函式又沒有顯式初始化,那麼data member就是未定義的。

#include

#include

#include

#include

#include

using

namespace

std;

structA};

intmain()

c 中如何給類的私有成員賦值?

zhLzm 最好的是通過建構函式給類的私有成員進行初始化 可以有多種初始化建構函式 如果需要在操作中設定某個私有變數基於C 類的封裝特性,最好編寫一個函式去修改需要改變的成員產量。 王祺 假設你的類在a.h中 define private public include a.h undef priva...

C 在類中能定義本身型別的成員嗎?

番茄.go 至少有兩種情況是允許的。指標靜態成員變數 Member.cpp include classA AA a int main 執行 g Wall O2 o Member Member.cpp Member An object of class A.An object of class A.A...

C 中類B需要訪問類A的私有成員變數,除了將B宣告為A的友元類外還有其它方法嗎?

春秋代序 友元函式可不可以呢。將類B的成員函式宣告為類A的友元函式,這樣的話比整個類宣告為友元類更安全一點。現在初學c 的大學生應該都會想到教材的友元成員函式這種簡單方法吧,不知道樓主是不是這個意思,如果樓主是所有友元方法都不想用,那就打擾了 陳俊皓 紙上談兵的方法是,讓類的乙個公共成員函式返回這個...