關於類的成員常量,靜態變數的相關推測

2021-04-15 06:41:07 字數 534 閱讀 3426

#include "stdafx.h"

class clstest

};int clstest::isnum ;

int _tmain(int argc, _tchar* argv)

當類中存在成員常量時,在類內進行的成員常量的宣告並沒有同時進行成員常量的定義,則該類的建構函式必須重

寫,因為成員常量需要在建構函式中定義(是定義不是初始化).

當類中存在靜態變數時,在類內進行的靜態變數的宣告也並沒有同時進行靜態變數的定義,因此需要在類的外部對

該靜態變數定義一次.

但,關於類中靜態變數的定義,為什麼需要做成這個樣子,目前沒有找到"官方"的說法.

自己猜測為:當宣告乙個類時,在程式記憶體(**段麼?)中只存在類的說明,而沒有關於類中的任何資料(注意是資料)

的空間進行申請.這樣一來類中的所有的靜態變數,成員常量都要想辦法為自己開闢空間.成員常量在改寫建構函式

時申請空間.而靜態成員不和任何物件相關,也就是不和建構函式相關,所以需要在類外,全域性作用域內定義變數從而

開闢資料空間.

變數,常量,靜態變數儲存的位置

常見的儲存區域可分為 1 棧由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。2 堆由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,程式會一直占用記憶體,導...

靜態變數和常量的區別

共同點 1 static和const在編譯時直接分配記憶體。區別 1 本質 static是型別引用,const是例項引用。2 初始化 靜態變數的初始值必須是乙個常量。靜態初始值預設為0,而常量也預設為0 嗎?3 賦值 靜態變數的值在執行時可以更改賦值,而常量的值是不可改變的,執行一開始已經固定,之後...

靜態變數與常量的區分

共同點 1 static和const在編譯時直接分配記憶體區別 1 本質 static是型別引用,const是例項引用。2 初始化 靜態變數的初始值必須是乙個常量。靜態初始值預設為0,而常量也預設為0 嗎?3 賦值 靜態變數的值在執行時可以更改賦值,而常量的值是不可改變的,執行一開始已經固定,之後修...