已采纳回答 / yiyoo
用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。
2018-11-04
注意,调用tesst1时创建的临时Person对象,该对象的构造函数是拷贝构造函数,因为没写拷贝构造函数,系统生成默认的拷贝构造函数,所以没有输出,可以自己试着写拷贝构造函数,最后按任意键继续后还有p和s的析构函数会输出
2018-10-30
public,无限制,谁都可以访问,protected是为了不让用户访问,比如在main函数里调用person.m_iAge,但是子类可以访问,private这样记吧,自己不让别人看的小电影,哪怕是子类也不行,最后,类的成员函数应该可以访问类的所有成员,无限制的,不然定义私有成员干嘛呢?理解好了就很好记
2018-10-29
最赞回答 / AMLXS
记住一句话,属性私有化,行为(函数)公开化如果基类中的属性使用protected修饰的话那么子类就可以使用函数访问并修改如果基类中的属性使用private 修饰话,那么子类就无法使用函数访问和修改,包括构造函数.
2018-10-14
test1的完整打印内容如下:
Person()
Person()
Soldier()
Person -- play()
Jim
~Person()
Person -- play()
James
~Person()
请按任意键继续. . .
~Soldier()
~Person()
~Person()
请按任意键继续. . .
Person()
Person()
Soldier()
Person -- play()
Jim
~Person()
Person -- play()
James
~Person()
请按任意键继续. . .
~Soldier()
~Person()
~Person()
请按任意键继续. . .
2018-10-06