-
delete后跟父类的指针只会执行父类的析构函数,delete后跟子类的指针既会执行父类的析构函数,也会执行子类的析构函数。查看全部
-
吾问无为谓查看全部
-
加关键字virtual使其变成虚函数,从而实现多态查看全部
-
宏定义是为了避免重复包含而写的,查看全部
-
在想要实现多态的函数前面加virtual关键字,使其成为虚函数。查看全部
-
异常处理的三个关键字: tyr{ } catch(){} throw 常见的异常:数组下标越界、除数为0、内存不足 异常与多态的联系 定义一个接口类,再定义若干继承接口类的表示不同错误信息的子类 出错时抛出对应错误的子类,用接口类接收错误查看全部
-
typeid(obj).name() 此函数用于返回obj的数据类型。<br> dynamic_cast的运用。 T1 obj1; T2 *pobj2 = dynamic_cast<obj1 *>(pobj2);<br> 类似于c的强制类型转换。如果转换失败,返回NULL;使用dynamic_cast转换时,必须是有虚函数的多态类型。且只能转换指针和引用。查看全部
-
接口类:只含有纯虚函数的类叫做接口类。接口类更像是一种协议。 使用接口类的时候,限制了传入的参数类型,并且可以放心的调用接口类的所有成员函数。查看全部
-
纯虚函数: 在虚函数的后面加 = 0 , 例如, virtual void work()=0; <br> 抽象类:含有纯虚函数的类叫做抽象类。抽象类无法实例化对象。其子类继承之后当把所有的虚函数都实现之后,才可以去示例化对象。查看全部
-
1.在实例化对象的时候,如果不存在虚函数且不存在数据成员的时候,这个对象的大小为1,这个1是数据成员用来标记此对象存在,如果有虚函数或者数据成员的时候,这个1就不存在了。 2.当存在虚函数的时候,实例化的时候会生成虚函数表指针,此指针的位置在改对象的最前面的四个地址。 3.数据成员的地址在虚函数表指针的后方。查看全部
-
以后在写析构函数的时候全部写上virtual关键字,防止子类继承的时候发生内存泄露查看全部
-
virtual 不能修饰的函数。<br> 不能修饰全局函数,只能修饰成员函数,不能修饰静态函数,构造函数,内联函数查看全部
-
虚继承,虚函数,虚析构函数。 虚继承:为了不让子类中包含两份父类的数据。 虚函数:为了实现多态性。 虚析构函数:为了不内存泄露。查看全部
-
动态多态是为了解决使用父类指针调用子类函数的问题查看全部
-
在派生类中,对基类函数进行重载,若基类中该函数没有用virtual修饰,则基类指针指向派生类时,使用该指针调用重载的函数,其调用的是基类中的函数,也就是说调用那个函数取决于指针的类型;若使用virtual修饰,则调用的是派生类中的函数,也就是说此时调用那个函数取决于指针所指向对象的类型。查看全部
举报
0/150
提交
取消