C++覆盖...覆盖?

Sim*_*ity 14 c++ overriding overwrite

我知道C++中最重要的是什么.但是,有覆盖吗?如果是这样,这是什么意思?

谢谢.

Jos*_*osh 18

在C++术语中,您具有覆盖(与类层次结构中的虚方法相关)和重载(与具有相同名称但使用不同参数的函数相关).您还隐藏了名称(通过在嵌套声明性区域或范围中显式声明相同名称).

C++标准不使用术语"覆盖",除了它的规范英语形式(也就是说,用一个新值替换一个值,如在x = 10覆盖前一个值的赋值中x).


mar*_*cog 7

您可以覆盖变量,例如int a = 0; a = 42;文件(打开现有文件进行写入 - 如果您有权限,它将覆盖现有文件内容),如果这就是您的意思.这与覆盖相关性很小.您是否想过载?


Uri*_*Uri 5

我熟悉的通常区别是覆盖和重载.虚拟功能被覆盖.当版本具有相同名称但签名不同(多种语言中存在)时,函数会重载.在C++中,您还可以重载运算符.

AFAIK,覆盖是一个不相关的概念(覆盖变量,文件,缓冲区等),并不是特定于C++甚至是OOP语言.

  • 实际上,不只是_operators_可以重载,而是任何功能.(IIRC,`std :: sqrt()`超载. (2认同)