打印

关于C++指针

[复制链接]
945|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-3-20 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想请问下一下这两种赋值方式的区别:

假设我有两个类,基类Base,其继承类Inherit,ptr为Base*类型的指针。
现有一个虚构函数func

1)
Inherit it(....); //继承类构造函数Inhrit(....)
ptr=⁢

2)
ptr=&Inherit(....);

如果使用1)中ptr调用func,则使用的是继承类中的版本
如果用2)中的ptr调用func,则为基类中的版本

这是为什么呢??

相关帖子

沙发
火箭球迷| | 2012-3-20 18:11 | 只看该作者
一)构造函数是不能使虚构函数的

因为继承类在形成对象时,构造是从基类开始的,由里向外,如果存在构造的虚函数,又怎么能构造成功呢。

使用特权

评论回复
板凳
火箭球迷| | 2012-3-20 18:11 | 只看该作者
二)虚函数的重载性要求函数原型相同(析构函数例外,这是析构函数可以使虚函数的原因)

1)如果仅仅返回类型不同,其余相同,则C++认为是错误重载。
2)如果函数原型不同,仅函数名相同,则C++认为是一般重载,因而丢失虚特性

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝