欢迎光临散文网 会员登陆 & 注册

Effective C++ 第三十六条 Never redefine an inherited non-virtual fun

2023-02-16 05:47 作者:九思519  | 我要投稿

绝不重新定义继承而来的 non-virtual 函数 .

假设当前有一个 base ,base 有函数 non-virtual  型的 fun,而 derived 继承 base,也定义一个 fun。现遇到如下情况:

上述这个例子说明了如果 derived 重载 base 的 non-virtual 函数会导致歧义。non-virtual 函数是静态绑定的,virtual 函数是动态绑定的。在这里就说明,对象的行为在静态绑定下表现并不在于对象(b、d)本身,而在于其声明类型(base、derived),也就是说哪怕你的对象是 derived,如果我用 base 型指针指向你,你就是 base ,我说你是谁你就是谁。而动态绑定对象表现取决于其本身,而不在于其声明类型,x 是 derived,不论用 base 还是 derived 型指针,结构都是 derived 的 fun,也就是说你是谁就是谁,跟我怎么说你没关系。


Effective C++ 第三十六条 Never redefine an inherited non-virtual fun的评论 (共 条)

分享到微博请遵守国家法律