
c++对象模型
文章平均质量分 72
It塔塔开
万丈高楼平地起,勿在浮沙筑高台。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搞懂浮点数
数值权与小数点的位置有关,小数点左边是10的非负幂,取整数值。的数,其他的值只能近似的表示。因为500正好等于舍入位的1/2,并且舍入位是偶数,所以向下舍入,1.22。因为500正好等于舍入位的1/2,并且舍入位是奇数,所以向上舍入,1.24。M:尾数,是一个二进制小数,取值范围[0,1)或[1,2)因为499小于舍入位的1/2,向下舍入,1.22。因为501大于舍入位的1/2,向上舍入,1.23。100正好是1/2,并且舍入位是奇数,向上舍入,100正好是1/2,并且舍入位是偶数,向下舍入,原创 2024-07-16 23:50:19 · 525 阅读 · 0 评论 -
构造、析构、拷贝(Semantics of Construction,Destruction,and Copy)
如果类没有定义析构函数,那么只有在类内的成员或基类拥有析构函数时,编译器才会合成一个析构出来。如果在构造函数里调用虚函数,那么调用的将是当前类里的那个函数,不会调用派生类里的虚函数。原因是:vptr的设置时间点是在 所有基类构造完之后,用户代码之前。如果T有一个默认构造函数,它会被调用。当我定义一个object如下。原创 2024-07-13 23:23:09 · 400 阅读 · 0 评论 -
函数语意学(The Sematics of Function)
c++ 设计准则之一就是:非静态成员函数至少和非成员函数有相同的效率。因为c++支持函数重载,所以在处理成员函数名称的时候加上了参数列表。一般情况下,会在成员名称后加上类名。如果成员函数是const 则变成。下面是处理后的Point类。Foo会被处理成下面这样。原创 2024-07-13 18:21:03 · 333 阅读 · 0 评论 -
构造函数语意学(The Semantics of Constructors)
和带有虚函数的情况类似。类似的道理,如果一个类没有定义任何构造函数,而他的父类含有默认构造。编译器则在需要的时候给这个类生成一个默认构造,用以调用父类的默认构造。如果一个类存在虚基类,编译器会为生成一张虚基类表用以存放所有的虚基类,会在类中安插一个虚基类表指针指向虚基类表。因为a和b的vptr指向的是同一张虚函数表,所以这里可以直接按位拷贝,不需要生成拷贝构造。如果这个类没有任何构造,编译器则会生成一个默认构造,用于正确设置虚基类表指针。举个例子,下面的程序中,编译器会为Bar生成一个默认构造。原创 2024-07-09 05:11:47 · 548 阅读 · 0 评论