- 函数指针
http://c.biancheng.net/view/228.html
- 虚函数表指针(类的内存分布一小部分)
https://blog.csdn.net/qq_28584889/article/details/88748923
- 构造函数和析构函数可以是虚函数嘛
https://blog.csdn.net/qq_28584889/article/details/88749862
- TCP 和 UDP 的区别
https://blog.csdn.net/zhang6223284/article/details/81414149
- C++类内存分布
定义一个空类,对该类求sizeof结果为1,因为在声明该类型的实例的时候,必须知道这个类在哪存在,否则无法使用这些实例。至于一个空类占多少内存,由编译器决定,vs中每个空类型的实例占用1字节的空间。 如果在该类型中添加一个构造函数和析构函数,再对其求sizeof还是1,因为你生命一个空类本身就存在默认构造函数和析构函数。 那如果把析构函数声明为虚函数,或者定义一个虚函数,发现再求sizeof变成了4!(在32位的机器上,如果是64位则是8) 原因是C++的编译器一旦发现一个类中有虚函数,就会为该类生成一个虚函数表,并在该类的每一个示实例中添加一个指向虚函数表的指针就是vptr。
类的成员变量和成员函数是分开存储的; 只有 非静态成员变量 才属于类的对象上;
class Person{
public:
int m_A;
static int m_B;
void func(){}
static void func2(){};静态成员函数,不属于类的对象上;
}
int Person::m_B=0;
为什么静态成员变量只能类内声明,内外初始化?
父类中所有非静态成员属性都会被子类继承下去,但是父类的私有属性会被编译器隐藏。子类不能访问而已,但是被继承了;
class Father(){
public :
int m_a;
private:
int m_b;
protected:
int m_c;
};
class son :public Father(){
int m_d;
};
类的继承关系和内存分布混合;没看太懂; https://www.cnblogs.com/jerry19880126/p/3616999.html
- 野指针
https://blog.csdn.net/l477918269/article/details/89949858
- 指针和引用
https://blog.csdn.net/xsydalao/article/details/93623647
|