我想知道是否可以让编译器对代码发出警告/错误,如下所示:
笔记:
1. 是的,这是不好的编程风格,我们应该避免这种情况——但我们正在处理遗留代码,希望编译器可以帮助我们识别这种情况。)
2. 如果有的话,我更喜欢编译器选项 (VC++) 来禁用或启用对象切片。
class Base{};
class Derived: public Base{};
void Func(Base)
{
}
//void Func(Derived)
//{
//
//}
//main
Func(Derived());
在这里,如果我注释掉第二个函数,则将调用第一个函数——编译器(VC++ 和 Gcc)对此感到满意。
它是 C++ 标准吗?当遇到这样的代码时,我可以要求编译器(VC++)给我一个警告吗?
非常感谢!!!
编辑:
非常感谢您的帮助!
我找不到给出错误/警告的编译器选项 - 我什至在 MSDN 论坛上为 VC++ 编译器顾问发布了这个,但没有任何答案。所以恐怕gcc和vc++都没有实现这个功能。
因此,添加以派生类为参数的构造函数将是目前最好的解决方案。
编辑
我已向 MS 提交反馈,希望他们能尽快修复:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=421579
-白燕