我可以在C ++中声明一个非成员函数const吗?

时间:2010-12-08 11:59:28

标签: c++ oop function const

我可以在C ++中将非成员函数(全局函数,可能)声明为const吗?我知道const关键字实际上应用于在成员函数中传递的隐式“this”参数。因为只有成员函数遵循“thiscall”调用约定,所以const可以应用于非成员函数吗?

除了我要通过声明非成员函数const而尝试做的事情之外,编译器会报告错误吗?

2 个答案:

答案 0 :(得分:18)

不,只有非静态成员函数可能const合格。

您对const非成员函数的期望是什么?如果要强制执行该函数不修改任何参数,只需通过const引用它们。

答案 1 :(得分:1)

回答第二个问题:尝试对非成员使用成员函数语法(即void foo() const;)是语法违规。因此,编译器必须提供诊断 - 错误或警告。它可能不会默默地忽略const。但是,它可能会报告警告,然后假装const不在那里并生成可执行文件。