C++ Primer
C++ Primer是一本C++经典著作,学习它对于深入了解C++有好处,而图形学大量依赖C++,故我进行学习这本书,记录在此。
15章
类继承的修饰方式:public、protected、private
public:基类所有对象访问权限保持原样到派生类
protected:基类所有public对象在派生类中变为protected对象
private:基类所有对象(public、protected、private)在派生类中变为private对象
总之,派生类继承基类对象的权限变化如下表
修饰方式 | 基类public | 基类protected | 基类private |
---|---|---|---|
public | public | protected | private |
protected | protected | protected | private |
private | private | private | private |
17章 标准库特殊设施
代码仓库
C++相关
查看OOP内存分布
使用visual studio 的 cl 工具可以很方便的查看类的内存布局:
以visual studio 2022为例:
在开始菜单里找到
visual studio 2022->x64 Native Tools Command Prompt for VS 2022
切换到当前目录(如果要切换盘符如切到D盘需要先输入 D:),然后输入下列命令:
cl /d1 reportSingleClassLayoutXXX [filename] ,其中XXX是类名,[filename]是文件名,
比如一个类名是Milk,文件是decorator.cpp:
cl /d1 reportSingleClassLayoutMilk decorator.cpp
就可以看到Milk类的结果:
拥有虚函数时,会在类的起始处插入vtable指针,多重继承每个继承插入一个。