[英]class(with static member) initialization in c++
我試圖理解friend
元函數,發現自己編寫了以下代碼
雖然我已經理解了友元函數,但這段代碼給我留下了新的問題:
我知道
static
成員由 class 的所有對象共享,並在創建第一個 object 時初始化為零
base_i
和derived_i
在什么時候被分配給代碼中的相應值我想它發生在
return derived::derived_i + derived::base_i;
newVar
#include <iostream>
class base
{
private:
static int base_i;
float newVar;
public:
friend int addClasses();
};
int base::base_i = 5;
class derived : private base
{
private:
static int derived_i;
public:
friend int addClasses();
};
int derived::derived_i = 3;
int addClasses()
{
return derived::derived_i + derived::base_i;
}
int main()
{
std::cout<<addClasses()<<std::endl;
}
當我沒有實例化任何 object 時,class 如何在這里初始化
您已經在其定義中初始化了變量:
int base::base_i = 5; // <-- the initialiser
語言實現負責 rest。
變量 base_i 和 derived_i 在什么時候被分配給代碼中的相應值
在調用main
之前初始化具有 static 存儲持續時間的非局部變量。
這是否也為 class 的所有其他成員分配了 memory,在這種情況下也特別為 newVar
當 class 的實例 memory 被分配時,非靜態成員變量的 Memory 被“分配”。 您沒有在示例程序中實例化 class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.