函数的Const声明
Const declaration of a function
它们之间有什么区别(以Const方式):
const int getNum(int &a, int &b) const;
const int getNum(int &a, int &b);
int getNum(int &a, int &b) const;
谢谢!
这些可能是成员函数声明,而不是常规函数。
const int getNum(int &a, int &b) const;
最左边的const
表示从该函数返回的int是常量。这是一个相对没有意义的区别——当然,int是常量,但在使用它之前,你会隐式地复制它。这个确实对类返回类型有影响,但它仍然不是特别有用。
最右边的const
表示可以对常量对象调用成员函数,并且不允许该函数修改对象。实际上,函数内部的this
指针将是常量。
const int getNum(int &a, int &b);
这里的const
与第一个例子中最左边的const
具有相同的含义——返回值是常量。
int getNum(int &a, int &b) const;
这里的const
与第一个例子中最右边的const
具有相同的含义——隐含的this
指针是常量。
const int swap(int &a, int &b);
返回不可更改的值
int swap(int &a, int &b) const;
返回可更改的值,但其中没有一个变量可以在运行时更改。
const int swap(int &a, int &b) const;
两个
第一个和第三个是const
成员函数,这意味着它们可以在const
实例上调用,并且不修改实例的任何字段。
第一个和第二个具有返回类型const int
,这不是很有用,因为它们返回一个临时值,所以将该值设为const
没有意义。
相关文章:
- 为什么函数声明中允许 const?
- 在内存不足之前,我可以声明多少个 const 变量?
- 如何在声明为 const 的方法中更改类成员
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 可以使用<size_t>static_const(),std::as_const()或static_cast<const size_t>()来声明数组吗?
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 声明与 const 变量和成员函数相同的标识符
- 为什么我不能声明一个 constexpr 本地,而一个 const 一个工作?
- 类中的const声明
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 为什么我们在这个函数声明中使用 const 和 & ?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 在C 中声明const Pointer是常见的
- 声明“const”“boost::range”的正确方法
- 在声明'const'函数中循环访问具有'const_iterator'的集合会导致错误
- 什么是最好的以及如何在 C++ 函数中声明 const
- 我可以从引用传递的参数返回值中声明const int吗
- 在函数中声明const而不是变量有什么好处吗?
- 是否在类外部重新声明const静态变量
- 声明const全局变量时需要静态的