关于我课上const方法的几个问题
A few questions about const methods in my class
我刚开始在公司使用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 std::string
std::string const
const
的顺序是无关的,因为你不是在处理指针。
有许多const
作为限定符是没有意义的。您是否将编译器上的警告级别设置为最大值?
编辑1:指针和Const
由于您返回的是一个变量的副本,因此const
的有效性是毫无价值的。不能修改函数的原始项,因为返回的是副本。
也许您对指针语法感到困惑,其中const
的位置很重要:
string const * const -- constant pointer to a constant (read-only string). Pointer cannot be modified.
string const * -- Mutable pointer to a constant (read-only) string. Pointer value can change.
string * const -- Constant pointer to a read/write string. Pointer value cannot be changed.
string * -- Mutable pointer to a read/write string. Pointer value can be changed.
用于只读数据的const
可以放在类型
const string *
string const *
三个版本
const string …
const string const …
string const …
的。
const
的位置在这里并不重要。第二个版本中重复的const
是多余的,编译器应该给出一个警告。
此外,const
s在这里没有意义,因为字符串作为拷贝返回。返回const
值没有任何意义(参见KABoissonneault的注释),只有指向const
的引用或指针才有意义。
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 关于 std::bitset 构造函数的几个问题?
- 分发我自己的程序的几个问题
- 关于Qt的几个问题
- 关于SDL_Window和unique_ptr的几个问题
- 关于C++内联函数的几个问题
- 我正在尝试[C++]练习多态性和OOD原则。需要指导和几个问题的答案
- 关于C++中数组的几个问题
- 我是C++新手,我有几个问题想问
- C++ - 关于引发异常的几个问题
- 选择-几个问题
- 在Windows上编译和运行示例c++程序的几个问题
- ReadFileEx,可变长度-几个问题
- c++中虚方法表的几个问题
- 关于评价顺序和比较的几个问题
- 关于类成员指针的几个问题
- 模板类——几个问题
- Qt(C++)的几个问题
- QtCreator的几个问题
- 关于我课上const方法的几个问题