C4250 是什么意思? Visual C+ 警告实际上意味着什么?我已经阅读了链接的 MSDN 页面,但我仍然不明白问题所在。
编译器会警告我什么,如果我忽略警告会出现什么问题?
最佳答案
警告指出,如果任何 weak
类操作依赖于在 dominant
中实现的 vbc
虚拟操作,那么这些操作可能由于它们捆绑在菱形继承层次结构中,因此可以更改行为。
struct base {
virtual int number() { return 0; }
};
struct weak : public virtual base {
void print() { // seems to only depend on base, but depends on dominant
std::cout << number() << std::endl;
}
};
struct dominant : public virtual base {
int number() { return 5; }
};
struct derived : public weak, public dominant {}
int main() {
weak w; w.print(); // 0
derived d; d.print(); // 5
}
这是标准规定的行为,但有时程序员可能会感到惊讶,weak::print
操作行为的改变并不是因为在层次结构,但在从 derived
调用时,由继承层次结构中的同级类调用。请注意,从 derived
的角度来看,它非常有意义,它调用的操作依赖于在 dominant
中实现的虚拟方法。
关于c++ - C4250 VC++ 警告是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190416/