const的不同位置的用法

xiaoxiao2025-04-11  21

const int fun(const int var) const;

1、 第一个const:函数的返回值是const。

此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字.但这只对于内部类型而言(因为内部类型返回的肯定是一个值,而不会返回一个变量,不会作为左值使用),对于用户自定义类型,返回值是常量是非常重要的 [2].

#include <iostream> using namespace std; class A { public: int _a; A(int a):_a(a){} friend const A operator +(const A& lft,const A& rgt) { return A(lft._a + rgt._a); } }; int main() { A a(1),b(3),c(7); a + b = c; //error: passing 'const A' as 'this' argument discards qualifiers [-fpermissive]| A result = a + b + c; // 11 cout << result._a << endl; return 0; } + 运算符重载加const 约束 对 a+b+c 这样的运算没有影响,因为a+b 运算的结果是const ,但对其只是只读操作,会创建一个新的 A 类返回。

2、第二个const:函数参数是const。传递过来的参数var在函数内不可以改变,一般我们的只读参数需要使用const来加以保护;

3、第三个const:该函数是const。编译器会对这个函数进行检查,在这个函数中的任何试图改变成员变量和调用非const成员函数的操作都被视为非法。 如:

int Stack::functiont(void) const { ++ m_num; // 编译错误,企图修改数据成员 m_num Pop(); // 编译错误,企图调用非const 函数 return m_num; }

参考: [1] c++函数返回类型什么情况带const [2] C++中const的不同位置的用法

转载请注明原文地址: https://www.6miu.com/read-5028045.html

最新回复(0)