深度探索C++对象模型笔记
文章平均质量分 93
11
冷眼观world
社畜
展开
-
第四章-函数语意学
文章目录成员的各种调用方式调用非静态成员函数名称特殊处理(mangling)调用虚成员函数看个问题:Point3d obj;Point3d *ptr = &obj;//下面这个调用会发生什么事?obj.normalize();ptr->normalize();/*Point3d normalize() const{ register float mag = magnitude(); Point3d normal; normal._x = _x / mag; norma原创 2021-11-01 14:59:58 · 249 阅读 · 0 评论 -
第一章-关于对象
C++对象模式以下类class Point{public: print(float xval); virtual ~Point(); float x() const; static PointCount();protected: virtual ostream& print(ostream &os) const; float _x; static int _pint_count;};在机器中会怎样存储呢?简单对象模式每个对象都有一系列的槽,每个槽指向一个成员原创 2021-10-16 17:00:51 · 56 阅读 · 0 评论 -
第二章-构造函数语义学
这节打破两个C++新手观点:任何类如果没有定义默认构造函数就会被合成一个出来合成出来的默认构造函数会设定类内每个数据成员的初始值默认构造函数的建构操作默认构造函数在被需要的时候才被编译器产生出来class Foo {...}void foo_bar(){ Foo bar; if (bar.val || bar.pnext) ...}这里需要Foo有个默认构造函数能将val和pnext初始化为0,可惜的是这里并不满足上面所说的“被需要的时候”,因为被需要是被编译器需要,这里只是原创 2021-10-18 21:01:19 · 491 阅读 · 0 评论 -
第三章-数据语意学
文章目录数据成员的绑定数据成员的布局数据成员的存取静态数据成员非静态数据成员继承与数据成员数据成员的绑定看个问题:extern float x;class Point3d{public: Point3d(float, float, float); float X() const { return X; } void X(float new_x) const { x = new_x; } //...private: float x, y, z;};Point3d::X()到底传回原创 2021-10-21 15:34:07 · 350 阅读 · 0 评论