老师的写法不规范啊,应该是#include <iostream>和#include "Person.h"
2015-09-17
3:20处觉得老师讲得不对,之所以打印两次~person,并不是临时变量被销毁的原因,难道不是s销毁时调用person类的析构函数吗?
2015-09-06
2:30是本调用test1时要声明了一个person的临时变量,调用拷贝构造函数,由于视频中没有提供拷贝构造函数,所以调用默认拷贝构造函数,并无输出。
2015-09-06
虚析构函数是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类对象。
如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。
所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数。
抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。
如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。
所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数。
抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。
2015-09-06
已采纳回答 / leosstudio
重定义就是已经定义了又再次进行定义,父类中定义了类的一些操作并且这些操作调用的顺序进行了约定,但是子类继承后对操作的实现需要进行了更改,对其调用顺序不需要关心,这个时候就使用重定义或者覆盖的方式。
2015-09-06