gpt4 book ai didi

c++ - const 成员函数和非常量成员函数有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 22:34:55 27 4
gpt4 key购买 nike

我对 const 版本和非常量版本的成员函数很困惑,如下所示:

value_type& top() { return this.item }
const value_type& top() const { return this.item }

这两个函数有什么区别?会在什么情况下使用?

最佳答案

简而言之,它们用于为您的程序添加“常量正确性”。

value_type& top() { return this.item }

这用于提供对 item 的可变访问。它用于修改容器中的元素。

例如:

c.top().set_property(5);  // OK - sets a property of 'item'
cout << c.top().get_property(); // OK - gets a property of 'item'

此模式的一个常见示例是使用 vector::operator[int index] 返回对元素的可变访问。

std::vector<int> v(5);
v[0] = 1; // Returns operator[] returns int&.

另一方面:

const value_type& top() const { return this.item }

这用于提供对 itemconst 访问。它比以前的版本限制更多 - 但它有一个优点 - 你可以在 const 对象上调用它。

void Foo(const Container &c) {
c.top(); // Since 'c' is const, you cannot modify it... so the const top is called.
c.top().set_property(5); // compile error can't modify const 'item'.
c.top().get_property(); // OK, const access on 'item'.
}

以 vector 为例:

const std::vector<int> v(5, 2);
v[0] = 5; // compile error, can't mutate a const vector.
std::cout << v[1]; // OK, const access to the vector.

关于c++ - const 成员函数和非常量成员函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066863/

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