2012-01-22 288 views
3

可能重复:
C++ Overriding… overwriting?覆盖与覆盖

什么overrideoverwrite之间的区别?我听说他们可以互换使用,但我怀疑这是不正确的。

+3

你的意思是“覆盖与**过载**”? –

+0

覆盖不是一个常见的C++术语。 –

+0

@VaughnCato,好吧,你也可以使用C++中的文件;-) –

回答

1

override是用来覆盖基础虚拟方法的C++ 11关键字:

class A 
{ 
    virtual f(int) {} 
}; 

class B 
{ 
    virtual f(int) override {} // override A::f(int) 
}; 

这可让您确保A::F(int)被重写,这意味着你没有创建新的虚拟功能。 当然如果函数签名不同,这段代码将不会编译。

覆盖不是C++关键字,它基本上意味着覆盖一些文件或文本与新的一个。

关键字override已被引入,因为程序员有时不知道他是否覆盖或者他是否正在创建具有不同签名的新虚拟方法。 使用该关键字可以获取错误或覆盖虚拟方法。

+0

如果不是答案中的拼写错误数目,那么会+1 ... –

1

您只能覆盖写入内容和写入位置,而您可以在别处覆盖其他内容(例如,您可以覆盖派生类中的基类成员)。