换句话说,为什么不只是编译器“知道”,如果一个函数的定义在派生类中被改变,并动态分配一个指针派生类的内存调用变更的功能,那么特别是函数应该被调用,而不是基类的?
在什么情况下不会有虚拟关键字工作提高到一个程序员的利益?
换句话说,为什么不只是编译器“知道”,如果一个函数的定义在派生类中被改变,并动态分配一个指针派生类的内存调用变更的功能,那么特别是函数应该被调用,而不是基类的?
在什么情况下不会有虚拟关键字工作提高到一个程序员的利益?
virtual
关键字告诉编译器实现动态调度 。那就是语言是如何设计的。 如果没有这样的关键字,编译器将不知道是否要实现动态调度。
不利的一面virtual
或动态分配一般是,
一个理由:
考虑设在单独的模块基类,像库。
而在应用程序中派生类。
编译给定函数库中如何将编译器知道/必须是虚拟的。
一个C ++的主要设计原则是, C ++不为不使用的(“零开销原则”)功能招致的开销 。 这是因为一家专注于高性能
这就是为什么你需要选择加入到像虚函数的功能,而在像Java语言,功能默认情况下虚拟的。
编译器不知道,因为它不能。 这可能是你的意图,不使用虚函数,因为总是与每一个功能相关的成本。