假设我有这样一个类:
class MyClass{
int somedata;
public:
virtual void DoSomething() { /*do something here*/}
};
然后我永远不会从这个课程中获得。我意识到如果编译器只是按照编写代码的方式编写程序集,那么每个MyClass
实例都会因虚函数而增加数据大小......
标准符合优化器优化类如下:
class MyClass{
int somedata;
public:
void DoSomething() { /*do something here*/} //Note absence of virtual
};
如果它是标准的符合优化,那么任何编译器都会这样做吗?
答案 0 :(得分:4)
符合编译器和链接器的标准可以做任何他们想要的事情,只要它对代码的预期行为没有影响,例如你引用的例子。
我清楚地回忆起浏览最近的gcc
发行说明,特别提到的是,与链接器合作,确实如此。
答案 1 :(得分:-1)
您应该使用C ++ 11标准中引入的final关键字。
Class My class {
Public:
Void doSomething () final;
}