在C中,从构造函数调用虚方法是否安全?

In C#, is it safe to call virtual method from constructor?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Virtual member call in a constructor

在C中,从构造函数调用虚方法是否安全?语言规范说明了什么?请按规格报价。我的意思是,它会调用派生类的实现吗?

这个疑问存在于我的头脑中,因为在C++中,从构造函数调用虚函数是不安全的。


你可以做,但你不应该做。我想C甚至会给你一个警告。

当函数被派生类重写时,会变得非常危险,因为您现在在调用派生类的构造函数之前调用了该函数。


这是不安全的,因为在匹配的构造函数有机会建立类不变量之前,将调用虚函数。

相反,它在C++中是安全的——调用的函数在匹配构造函数中被调用,而不是在之前调用。