C++ 基礎知識1
阿新 • • 發佈:2018-11-03
sizeof:
#include<iostream> using namespace std; class A { private : int value; public: A(int n) { value = n;} A(A &other) { value = other.value; } void printf() { cout << value << endl; } }; class B { }; class C { public: C() {}; ~C() {}; }; class D { public: virtual void fun() {}; }; int main() { A a = 10; A b = a; cout << sizeof(B) << endl; cout << sizeof(C) << endl; cout << sizeof(D) << endl; b.printf(); return 0; }
1、sizeof(空類型別)輸出為1個位元組;空類型別中沒有任何成員變數和成員函式;宣告例項的時候,它必須佔用一定的空間,否則無法使用例項,使用多少記憶體由編譯器決定,Visual studio中每一個空類的例項佔用一位元組的空間。
2、空類中增加了解構函式和建構函式,sizeof(類)的大小為1,解構函式和建構函式只需要知道函式的地址,函式地址與函式型別有關,與函式的例項無關
3、空類的解構函式標記為虛擬函式;C++編譯器發現一個型別中有虛擬函式,該型別會生成虛擬函式表,並在該型別的每一個型別例項中新增一個指向虛擬函式表的指標;32位一個指標4位元組,sizeof為4;64為機一個指標8位元組,sizeof為8
4、C++不允許賦值建構函式傳值引數,需要用常量引用