随笔分类 - c++对象模型
摘要:#include class Point3d{public: virtual ~Point3d(){}public: static Point3d origin; float x, y, z;};//从打印的地址看出这个类的结构应该是vptr|x|y|z,vptr是放类空间的头部的...
阅读全文
摘要:#include using namespace std;//关于类不展现按位拷贝语义的几种情况/** *1.类的成员对象含有默认拷贝函数 *2.继承的基类包含拷贝函数(无论是合成的还是自己定义的) *3.有虚函数,因为虚指针按位拷贝有问题 *4.派生自虚基类 */ class Word{publ...
阅读全文
摘要:#include using namespace std;//word类展现了默认拷贝语义,不会合成默认拷贝构造函数,而是对于每一个成员变量实时memberwise的bitcopyclass Word{public: Word(const char*) { } ~Word()...
阅读全文
摘要:#include using namespace std;class A{public: virtual ~A(){cout<<"A destructor---"<<endl;}};class B:public A{public: B(){cout<<"B----constructor-...
阅读全文
摘要:有时候,基类构造函数是带有参数,而子类构造函数是不带参数的,如下:class Animal{public: Animal(int width, int height) { this->width = width; this->height = height; }private: int ...
阅读全文
摘要:/***1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。2.宏进行定义时不会考虑参数的类型。3.参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。4.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。5.参数...
阅读全文
摘要:程序设计的三种典范(c++对象模型)1.程序模型就像c中那也的str*系列的函数如:char boy[] = "wcfsf";char p = new char[strlen(boy) + 1];strcpy(p, boy);感觉这个就是在函数内部实现的,没有什么封装的概念2.抽象数据类型(ADT)...
阅读全文
摘要:不同类型的指针int *pvoid *pZooAnimal* p这个问题由来已久,各种类型的指针,内存中只是一个4个字节存储的地址,那怎么区分呢主要是其寻址出来的object类型不同,指针类型会教导编译器如何解释某一个特定地址中的内容和大小,我突然想到了汇编中哪些寻址,这个指针的寻址和那个肯定有关系...
阅读全文
摘要://这个例子让我想起了mongo如何突破32的限制#include class stumble{public:protected:private: //对于class一样的访问权限的数据成员是放在一起的,但不同的权限不是一样的 char pc[1];//好像protected放在priv...
阅读全文
摘要:/*对于此类的模型为:class object{ float _x;//类的nonstatic成员函数 _vptr_Point;//指向虚函数表的指针}virtual table//虚函数表的信息(应该存放的是一些指针)slot1---type info for Point(用于支持RT...
阅读全文