static、const徙菠、static const類成員變量初始化
const修飾的是常量讯沈,在超過作用域時(shí)會(huì)被釋放;static修飾的是靜態(tài)變量婿奔,對(duì)于類來說靜態(tài)成員是屬于整個(gè)類的缺狠。
static、const的初始化
class Test_Class_A {
public:
Test_Class_A():const_var(1){
cout << "這是構(gòu)造函數(shù)" <<endl;
}
const int const_var;
static int static_var;
};
int Test_Class_A::static_var = 2;
int main()
{
return 0;
}
- 常量是恒定不變的萍摊,類實(shí)例在進(jìn)入構(gòu)造函數(shù)前就會(huì)初始化所有的成員變量挤茄,常量只能由初始化列表初始化
- 靜態(tài)成員變量是屬于整個(gè)類的與構(gòu)造函數(shù)無關(guān),在類外部定義和初始化即可
static const初始化
staic const和const static意義是一樣的冰木;假設(shè)期望定義一個(gè)所有類實(shí)例中恒定的量穷劈,就需要用到這個(gè)關(guān)鍵字了
using namespace std;
class Test_Class_A {
public:
Test_Class_A():const_var(1){
cout << "這是構(gòu)造函數(shù)" <<endl;
}
const int const_var;
static const int static_var;
};
const int Test_Class_A::static_var = 2; //定義+初始化
int main()
{
return 0;
}
static const應(yīng)當(dāng)被看作是恒定的靜態(tài)變量笼恰,因?yàn)槠浯鎯?chǔ)架構(gòu)和static是一致的
類聲明中初始化
在C++較高的版本中是支持在類的聲明中直接定義變量的
#include <stdio.h>
#include <stdlib.h>
#include <typeinfo>
#include <vector>
#include <iostream>
using namespace std;
class Test_Class_A {
public:
Test_Class_A():const_var(1){
cout << "這是構(gòu)造函數(shù)" <<endl;
}
const int const_var;
static const int static_var = 0;
};
int main()
{
cout << Test_Class_A::static_var << endl;
//cout << &Test_Class_A::static_var <<endl; 報(bào)錯(cuò)
return 0;
}
- 可以在類的聲明中初始化,但是需要明確的是:這里為什么可以用歇终?是因?yàn)榫幾g器做了文本替換之類的操作社证,此時(shí)該變量還是未定義的
- 由上一條可知,這種類聲明中初始化的方式僅限于
int评凝、float
等內(nèi)置類型