-
局函数doSomething(),传入一个obj类型的指针,通过cout打印一下传入的对象指针究竟是一个什么样的对象,也就是它的数据类型。使用typeid时,在typeid中传入的不是obj,而是*obj,这样就反应放入的是一个对象,这个对象就是obj指针所指向的对象,将来传入的是plan就是plan的对象,传入的是一个bird就是一个bird的对象,使用.访问数据成员时,返回来的就是数据类型。下面的代码判断了这个obj指镇所指向的数据是什么类型,判断是否是bird或plan类型,执行相应的代码。假如是bird类型,就将obj这个指针通过dynamic_cast将它转化为bird的指针,并将这个指针赋值给一个新的指针bird,同时通过这个bird来调用foraging这个成员函数。查看全部
-
将obj这个指向转换为Plane的指针或者是Bird的指针<br> typied(*obj).name() 打印的是某个类型<br> typeid能打印的指针,是指针本身的类型<br> dynamic_cast转换必须是指针或者是引用,而且要转换的类型中必须含有虚函数查看全部
-
RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast< >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型 dynamic_cast用法的注意事项:只能应用于指针和引用之间的转换,即< >中只能是某一类型的指针或者是某一类型的引用;要转换的类型中,必须包含虚函数;转换成功返回子类的地址,失败返回NULL typied的注意事项:type_id 返回一个type_info对象的引用;如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;只能获取对象的实际类型查看全部
-
定义一个能够射击(CanShut)类,要求含有纯虚函数aim和reload 定义一个枪(Gun)类,继承CanShut类,并实现函数aim和reload。 定义函数Hunting(CanShut *s),调用s指向对象的函数。 在函数中传入Gun的对象,查看结果:查看全部
-
可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数。<br> 一个类可以继承一个接口类,也可以继承多个接口类。<br> 一个类可以继承接口类的同时也继承非接口类。 接口类中仅有纯虚函数,不能含有其它函数,也没有数据成员。 接口类可以被继承,不能实例化查看全部
-
接口类:只含有纯虚函数的类叫做接口类。接口类更像是一种协议。 使用接口类的时候,限制了传入的参数类型,并且可以放心的调用接口类的所有成员函数。查看全部
-
接口类:仅含有纯虚函数的类,没有数据成员,仅有纯虚函数的成员函数 接口类更多地表达一种能力或协议查看全部
-
这题有几点要注意,我也是在看了评论才知道的,分享下: 1、Dog类少了个{,看了评论才发现的 2、实例化Dog时应该必须输入带参的,而且参数一定是"狗类"才能完美实现题目要求。带参是为了打印第一个Dog,必须是"狗类"才能在中间打印出"Dog-狗类--eat"、"Dog-狗类--move",具体看函数 我明明是错的也能通过,幸好留心了下评论,这告诉我,没看到正确结果,就不能自认为是对的,看看评论是有帮助的查看全部
-
只有函数声明没有函数定义的虚函数是纯虚函数。 B含有纯虚函数的类叫做抽象类 C不可以使用含有纯虚函数的类实例化对象。 D抽象类的子类也可以是抽象类。查看全部
-
(1)ctrl+K+U,是去掉注释 (2)父类是抽象类,且纯虚函数是公有的,子类公有继承下来的时候,若没有现实跟父类同名的纯虚函数,则也会继承父类的纯虚函数,此时的子类也是一个抽象类,也不能实例化对象。查看全部
-
typedef关键字使用注意事项查看全部
-
dynamic_cast关键字使用注意事项查看全部
-
虚函数:virtual double calcArea(){return 0;}<br> 纯虚函数:virtual double calcPerimeter() = 0; 纯虚函数在虚函数表中直接写为0,包含纯虚函数的类,就是抽象类。 纯虚函数无法调用,所以抽象类无法实例化对象 抽象类的子类也有可能是抽象类。抽象类的子类只有把抽象类当中的所有纯虚函数都做了实现,子类才可以实例化对象。 抽象基类是本类族的公共接口,例如可通过抽象基类的指针访问到任何子类的虚函数,并对这些函数下达同一命令,从而实现多态性。 若是子类并没有对父类中的纯虚函数进行定义,则该子类仍然是抽象基类。查看全部
-
RTTI查看全部
-
RTTI查看全部
举报
0/150
提交
取消