c++ - 可以通过 const 说明符重载函数吗?

标签 c++ function constants overloading

是否可以通过 const 说明符重载函数。也就是说,我们有两个函数,一个是常量,另一个不是,我们能说常量函数重载了非常量函数吗?

最佳答案

是和否

这取决于您放置 const 说明符的位置。

在定义成员函数时,这是可能的(是的部分):

int f() { /*code*/ }         //invoke this function on non-const object
int f() const { /*code*/ }   //ok : invoke this function on const object

请注意,在没有 first 函数的情况下,即使是非常量对象也会调用第二个函数(即 const 成员函数)并且在没有 < em>second 函数,您将无法在 const 对象上调用第一个函数!

但这是不可能的(No-part):

int g() { /*code*/ }
const int g() { /*code*/ } //error: redefinition 

无论它们是成员函数还是自由函数。

关于c++ - 可以通过 const 说明符重载函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464116/

相关文章:

c++ - 使用宏简化 C++ 代码。错误 : pasting "<" and "string" does not give a valid preprocessing token

c++ - 如何用 C 在 pcre 中编写适当的模式

c++ - 将测量的时间差与 float 进行比较

ruby - 在 Ruby 中,模块中定义的类如何知道模块的常量?

c++ - 在 gdb 中使用核心转储时,我如何确切知道哪个线程导致了 SIGSEGV?

c - 对 'freeHeap' 的 undefined reference

function - J、创建函数

javascript,这个函数怎么可能返回一个空数组?

可以从编译时未知的其他地方修改 const 变量吗

c++ - 可以使用初始化列表更改 const 值吗?