gpt4 book ai didi

c++ - 我应该返回 const 对象吗?

转载 作者:IT老高 更新时间:2023-10-28 12:05:38 28 4
gpt4 key购买 nike

Effective C++第 03 条,尽可能使用 const。

class Bigint
{
int _data[MAXLEN];
//...
public:
int& operator[](const int index) { return _data[index]; }
const int operator[](const int index) const { return _data[index]; }
//...
};

const int operator[]确实与 int& operator[] 有所不同.

但是呢:

int foo() { }

const int foo() { }

看起来他们是一样的。

我的问题是,为什么我们使用 const int operator[](const int index) const而不是 int operator[](const int index) const ?

最佳答案

非类类型的返回类型上的顶级 cv 限定符被忽略。这意味着即使你写:

int const foo();

返回类型是int。如果返回类型是引用,当然,const 不再是顶层,和之间的区别:

int& operator[]( int index );

int const& operator[]( int index ) const;

很重要。 (还要注意,在函数声明中,像上面一样,任何顶级 cv 限定符也会被忽略。)

区别也与类类型的返回值有关:如果你return T const,则调用者不能在返回值,例如:

class Test
{
public:
void f();
void g() const;
};

Test ff();
Test const gg();

ff().f(); // legal
ff().g(); // legal
gg().f(); // **illegal**
gg().g(); // legal

关于c++ - 我应该返回 const 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com