#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
class A
{
public:
int c = 3;
int a = 1;
int b = 2;
};
int main(int argc, char* argv[])
{
cout<<sizeof(A)<<endl;
A a;
cout << a.a<< a.b<< a.c << endl;
return 0;
}
12
123
請按任意鍵繼續. . .
類在定義時沒有分配空間嗎???
為什么sizeof(A)會是12個位元組
類在定義時不可以初始化???
cout << a.a<< a.b<< a.c << endl;輸出正常
uj5u.com熱心網友回復:
只能說現在的某些C++編譯器越來越智能化,他會把你的類內初始化成員陳述句放入到默認的初始化函式中完成(你在反匯編代碼中可以看到)。類在定義時沒有分配空間嗎???
為什么sizeof(A)會是12個位元組
這個更容易解釋,sizeof并不是真正的函式,它只是個宏,它對任何型別變數的求值是在編譯期而非執行期完成的。也就是說在執行期,size_t x = sizeof(A)已經變成了size_t x = 12這樣常量賦值陳述句。
uj5u.com熱心網友回復:
C++11新特性Non-static data member initializers
sizeof得到的是對應的型別占用空間大小。
uj5u.com熱心網友回復:
最好要寫代碼初始化,編碼器的自動初始化是不確定的uj5u.com熱心網友回復:
sizeof 是運算子轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/77397.html
標籤:基礎類
