gpt4 book ai didi

c++ - const vector 意味着 const 元素?

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

是否 const vector<A>意味着它的元素是const也一样?

在下面的代码中,

v[0].set (1234);void g ( const vector<A> & v )产生编译器错误

const.cpp:28:3: error: member function 'set' not viable: 'this' argument has type 'const value_type' (aka 'const A'), but function is not marked const

为什么?

但是(*v[0]).set(1234);void h ( const vector<A *> & v )对编译器来说没问题。

版本之间有什么区别?

// ...........................................................
class A {
private:
int a;
public:
A (int a_) : a (a_) { }
int get () const { return a; }
void set (int a_) { a = a_; }
};

// ...........................................................
void g ( const vector<A> & v ) {
cout << v[0].get();
v[0].set (1234);
} // ()

// ...........................................................
void h ( const vector<A *> & v ) {
cout << (*v[0]).get();
(*v[0]).set(1234);
} // ()

最佳答案

是的,const vector 提供了对其元素的访问,就像它们是 const 一样,也就是说,它只为您提供 const 引用。在您的第二个函数中,不是 A 类型的对象是 const,而是指向它们的 pointers。一个指针是 const 并不意味着指针指向的对象是 const。要声明指向 const 的指针,请使用类型 A const *

关于c++ - const vector 意味着 const 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27065617/

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