-
try{fun();throw X;} catch(){}查看全部
-
typeid(对象);如过是指针obj那么传入*obj,typeid用于返回指针或引用所指对象的实际类型。 typeid(对象).name();返回对象类型。 dynamic_cast<类型>(指针) 形如:Plane *plane = dynamic_cast<Plane*>(obj);将obj指针转换为Plane指针,并赋值给plane指针。 dynamic_cast运算符可以在执行期决定真正的类型。如果 downcast 是安全的(也就说,如果基类指针或者引用确实指向一个派生类对象)这个运算符会传回适当转型过的指针。如果 downcast 不安全,这个运算符会传回空指针(也就是说,基类指针或者引用没有指向一个派生类对象)。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 **另:要注意:dynamic_cast<>(pB),在class B中要有虚函数,否则会编译出错;static_cast则没有这个限制。查看全部
-
dynamic_cast 1.只能应用于指针和引用的转换 2.要转换的类型中必须包含虚函数 3.转换成功返回子类的地址,失败返回NULL typeid注意事项 1.type_id返回一个type_info对象的引用 2.如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数 3.只能获取对象的实际类型查看全部
-
用接口类做函数形参,可以限制传入参数的类型,只有拥有接口类定义的函数功能的对象才能作为实参查看全部
-
在类中,仅含有纯虚函数的类称为接口类查看全部
-
子类的所有的构造函数,默认都会访问父类中空参数的构造函数。 因为子类每一个构造函数内的第一行都有一句隐式super(); 当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。 当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。 子类中至少会有一个构造函数会访问父类中的构造函数 调用的是父类的查看全部
-
含有纯虚函数的类称之为抽象类; 抽象类的派生类也可能是抽象类; 由于抽象类无法实例化对象,所以只能当派生类将抽象类的纯虚函数全部实现时才能通过该派生类实例化对象。查看全部
-
纯虚函数在虚函数表中的结构 含有纯虚函数的类(抽象类)无法实例化对象 虚函数的格式virtual <返回值类型><函数名>(<参数表>)=0; 如virtual double A()=0查看全部
-
关于多态的理解: 当父类有虚函数时,编译系统会自动为该类配一个虚函数表,并将类中虚函数的地址写入这个表中,表的位置由类中隐含的虚函数表指针给出,而且其每个实例化的对象均会共享这个表。其子类会继承该虚函数表,当然,子类的虚函数表的指针是重新赋予的,与父类的不同。在子类的虚函数表中,继承了父类的虚函数地址,也有子类自己的虚函数地址。此时子类中若是出现了与虚函数列表中父类函数同名的函数,则该子类函数会替换掉对应的父类函数。此时再通过父类指针调用同名函数时,就会调用到子类的函数。 这里有一点要注意到:虚函数只是将自己的地址复制到虚函数表中而已,其它则与别的成员函数并无二异。也就是说,虚函数有两个入口。而调用虚函数默认先从虚函数表中调用。所以这就说明了为什么父类指针可以调用到同名的子类函数:因为虚函数表中原来的父类函数地址被子类函数覆盖掉了。当然,同名的另一个父类函数还是存在的,只不过虚函数表中没有它的地址而已。可以通过另一个入口调用。查看全部
-
当在派生类构造函数中申请内存后,父类指针执行结束后不会调用派生类的析构函数,从而造成内存泄漏。将父类的析构函数写成虚析构函数即可。 关键词virtual不能修饰构造函数,静态函数,内联函数,普通函数(必须是类中的成员函数)查看全部
-
多态具体到语法中是指,使用父类指针指向子类对象,并可以通过该指针调用子类的方法。查看全部
-
虚函数,是用派生类实例化一个基类(共有继承)时,通过在共有函数前+virtual来表示调用该父类函数时可能在派生类们中有同名函数的不同实现。满足复制兼容规则。 Shape *shape1 = new Reac(3,6); Shape *shape2 = new Circle(5);查看全部
-
B、虚函数使用virtual关键字定义,但使用virtual关键字时,并非全部是虚函数 C、虚函数特性可以被继承,当子类中定义的函数与父类中虚函数的声明相同时,该函数也是虚函数。 D、虚析构函数是查看全部
-
异常处理:对有可能发生异常的地方做出预见性安排查看全部
-
typeid注意事项 1.type_id返回一个type_info对象的引用 2.如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数 3.只能获取对象的实际类型查看全部
举报
0/150
提交
取消