首页 / C# / c# – 在C中覆盖虚函数
c# – 在C中覆盖虚函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在C中覆盖虚函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含915字,纯文字阅读大概需要2分钟。
内容图文
![c# – 在C中覆盖虚函数](/upload/InfoBanner/zyjiaocheng/745/f62eaa7778ac41929b60ba1d9c293aca.jpg)
我有一个带虚函数的基类 – int Start(bool)
在派生中,有一个具有相同名称但具有不同签名的函数 –
int Start(bool, MyType *)
但不虚拟
在派生的Start()中,我想调用基类Start()
int Derived::Start(bool b, MyType *mType)
{
m_mType = mType;
return Start(b);
}
但它给出了编译错误.
"Start' : function does not take 1 arguments"
但是Base :: Start(b)有效
在C#中,上述代码工作,即解析调用不需要Base的引用.
如果呼叫如下进行,则在外部进行
Derived *d = new Derived();
bool b;
d->Start(b);
它失败并显示以下消息:
Start : function does not take 1 arguments
但在C#中,同样的情景也适用.
据我所知,虚拟机制不能用于解析调用,因为这两个函数具有不同的签名.
但这些电话没有按预期得到解决.
请帮忙
解决方法:
您的两个选项是使用Base :: Start添加以解决Start的范围
int Derived::Start(bool b, MyType *mType)
{
using Base::Start;
m_mType = mType;
return Start(b);
}
或者如您所述,添加Base ::前缀.
int Derived::Start(bool b, MyType *mType)
{
m_mType = mType;
return Base::Start(b);
}
内容总结
以上是互联网集市为您收集整理的c# – 在C中覆盖虚函数全部内容,希望文章能够帮你解决c# – 在C中覆盖虚函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。