我可以在C ++中将非成员函数(全局函数,可能)声明为const吗?我知道const关键字实际上应用于在成员函数中传递的隐式“this”参数。因为只有成员函数遵循“thiscall”调用约定,所以const可以应用于非成员函数吗?
除了我要通过声明非成员函数const而尝试做的事情之外,编译器会报告错误吗?
答案 0 :(得分:18)
不,只有非静态成员函数可能const
合格。
您对const非成员函数的期望是什么?如果要强制执行该函数不修改任何参数,只需通过const引用它们。
答案 1 :(得分:1)
回答第二个问题:尝试对非成员使用成员函数语法(即void foo() const;
)是语法违规。因此,编译器必须提供诊断 - 错误或警告。它可能不会默默地忽略const
。但是,它可能会报告警告,然后假装const
不在那里并生成可执行文件。