- 主题:一直不明白类的虚函数重写设计的规范
一直不明白类的虚函数重写设计的规范
如果需要在运行时绑定实际调用的代码,在基类必须设定函数为虚函数
其他都是调用基类的函数
为啥不能像java之类的设计规范 只要子类出现同样函数签名的就认为是重写,在编译的时候发现变量和实例化对象不一致就按运行时绑定的规则处理,也省去维护虚函数表的麻烦(也就是说直接基于实例化的对象来决定调用)。
--
FROM 124.127.24.*
有这个问题 ,但是就的明确一个简短的规则,避免复杂化,同样签名就当作重写的。
其实这块java c#规则就比较清晰,基于实例化的对象类型确定调用,并且重写的子类优于父类
【 在 z16166 的大作中提到: 】
: 万一typo了,误写成同样signature的函数,然后被编译器自动当成virtual override,然后费老大劲后才发现,岂不是很冤 ?
--
FROM 124.127.24.*
嗯
规范上其实比较清晰的
不加@Override 只要签名以制 也认为是重写的
规则比较清晰明确
都是后期绑定
可能对于没有虚函数的c++类多了一些开销,不过都已经设计成类了,那些开销其实也没必要在乎了
【 在 callmebbser 的大作中提到: 】
: 所以,Java IDE有一点好,文件一保存,会自动在与父类同名的方法上方添加上@Overr
: ide注解。
: 一看到这就知道子类方法覆盖了父类方法。
: ...................
--
FROM 124.127.24.*