1. 程式人生 > >C++ 基礎知識1

C++ 基礎知識1

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++不允許賦值建構函式傳值引數,需要用常量引用