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++不允许赋值构造函数传值参数,需要用常量引用

猜你喜欢

转载自blog.csdn.net/qq_20599225/article/details/83181434