在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
答:因为类外static变量或函数表示限定在此源文件中才能使用,而类中的static变量或函数表示由本类及其所有对象共享,如果在类外初始化或定义类的成员变量或函数加上static关键字,会引起两个含义上的语义歧义. 2.为什么析构函数要被定义为虚函数答:定义虚析构函数后,由于多态,当使用delete释放基类指针指向派生类对象时,会调用派生类的虚构函数,然后派生类的析构函数自动调用基类析构函数。不是虚函数的话,直接调用基类的析构函数了。如果派生类中有用new分配的内存,就无法释放了。 3.为什么构造函数不能为虚函数(1) 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功,编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。 (2)虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间,虚函数表还没有被初始化,将无法进行。 4.如何辨别函数型调用是函数,类的构造函数还是函数对象答:通过查看定义,用函数名调用的是函数,用类名调用的是类的构造函数,用类的对象名调用的是函数对象。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论