【发布时间】:2015-07-06 17:49:09
【问题描述】:
我刚开始在公司使用 C++ 编写企业软件,在成员函数中使用 const 让我很困惑。比如我有以下方法:
string DAC::impulse_find(int i)
变量 i 不会被修改。当我使用将 const 添加到上述方法的这三种变体时,我的代码编译完美:
const string DAC::impulse_find(const int i) const
const string const DAC::impulse_find(const int i) const
string const DAC::impulse_find(const int i) const
那么这三者之间究竟有什么区别呢?我查看了一些过去的答案并说“它适用于左边的任何东西”,但这仍然令人困惑。它是否适用于任何东西,例如类的名称?
【问题讨论】:
-
返回一个不是引用的常量变量是没有价值的。不需要
const,因为该函数会返回一个副本。 -
你可以改用
const string& DAC::impulse_find(int i) const -
当您不知道
const的词法规则时,您似乎不太可能编写“用C++ 编写的企业软件”... 此外,通过猜测进行编程也行不通。你用哪本书来学习 C++? -
@TheSalamander “我不擅长学习”这是对您在此处阅读的内容的相当荒谬的看法。
-
@TheSalamander 我们只是不明白您为什么要尝试将 const 修饰符添加到返回值。返回值是一个临时副本,也就是说你无论如何都不能修改它