摘要:以下说明继承类函数构造时,先构造基类; 析构基类时,若没加上virtual,只析构基类,不析构派生类; 析构派生类时,同时会析构基类; 1. 基类析构函数有virtual 运行结果: 2. 基类析构函数无virtual 运行结果为:
阅读全文
摘要:实际上无论是用基类还是派生类New, 结果是一样的: 运行结果为:
阅读全文
摘要:下面的内容要说明两个问题:1. 基类的析构函数为什么要加上Virtual--防止内存泄露 1. 基类虚构函数无virtual,派生类无法析构,会导致内存泄露 运行结果为: 2. 若在基类析构函数前加上Virtual 运行结果为:
阅读全文
摘要:类的继承会首先寻找基类,若基类未实现,则会寻找派生类的函数 1. class继承,函数不继承 运行结果: 2. 函数和Class都继承 运行结果:注意派生类中可以不写virtual,最好写上,以辨别是函数继承 若将2中基类的函数写为纯虚函数,运行的结果一样,但是如果基类是纯虚函数,派生类必须实现相应
阅读全文
摘要:在这里列出了空类,类有函数,值,没有函数的大小,注意Class是默认字节对齐 运行结果: 结论:1.空类的大小和含有构造和析构函数的类的大小为1个字节; 2.New的class的大小为指针所占用的内存,为4,与类的大小以及是否含有变量和函数无关; 3. 含有虚函数的类,由于虚函数需要建立一张虚函数表
阅读全文
摘要:在修改别人的代码的过程中,发现很多人会把struct和struct的定义混淆,在这里主要是为了提醒自己Struct定义的规范性。 运行的结果为: 在这里Struct G的大小为8是因为:字节对齐,说明Struct在默认情况下,就已经做了字节对齐。
阅读全文
摘要:如果项目生成了.dll文件,但是没有生成.lib文件,这是由于项目的设置错误,应作如下修改: 项目->属性->链接器->输入->模块定义文件,设置你的模块定义文件,默认为lib.def,也可以改成你想要定义文件的名称。注意,这里是模块定义文件的名称,不是.lib文件。 仅以此作为项目开发过程中问题的
阅读全文