人生短暂,做点记录吧!
1、一个空类占内存1个字节。这是为了保证n个连续空类声明时,变量地址有偏移,防止变量覆盖。
2、一个类成员 ,当有虚函数时,就存在一个虚函数表的 "指针"(无虚不存在)。
3、C和C++都支持结构体,C++的结构体,可以认为是类的一种变体,二者的差异性。类中成员,如果不声明,默认是private,结构体中成员,如果不声明,则默认是public。
4、在C++里面,结构体与类都可以内置成员函数,而C的结构体,内部只允许存在成员变量,如果需要内置成员函数,需要程序员显式声明函数指针变量。
5、一个类,所有的非虚函数,会被编译器排成一个符号表,放置在特定的编译器基础变量区,也就是放在exe文件里面的,在调用一个程序时,直接从文件中读出。
6、虚函数和普通成员函数不同,每个对象都有可能变化,因此这个函数的指针必须跟着对象走,而不是类。
7、类的每个虚函数由每个函数指针栈维护,栈底元素指向基类虚函数,栈顶元素指向派生类虚函数,一个类,被继承几次,最后继承类的对象中的栈就有几层,类中所有虚函数的栈指针由虚指针维护。
8、C++静态成员变量属于整个类拥有,可以被普通函数修改,需在类外初始化。
9、C++静态成员函数只能修改静态成员变量,不能修改普通成员变量。