gpt4 book ai didi

c++ - 当容器作为私有(private)成员在类中时如何访问容器方法?

转载 作者:行者123 更新时间:2023-11-28 00:34:12 25 4
gpt4 key购买 nike

我有一个简单的问题。我有一个说 A 的类,它有一个私有(private)成员,它是一个 STL 容器,例如一个整数 vector 。有没有办法使用它的方法(例如大小、调整大小等...)?经典的“get 函数”是否足够?

Class A
{
private:
std::vector<int> v;
public:
std::vector<int> get_v() {return v;};
};

如果是,“获取函数”不是只获取成员而不修改成员吗?

非常感谢

最佳答案

这里通常要做的是返回数据成员的常量引用:

const std::vector<int>& get_v() const
{
return v;
}

请注意,我还使函数保持不变。这告诉您该函数不会修改类中的任何数据成员。

目前,您正在获取 vector 的深层拷贝,这在性能方面代价高昂,并且还会使您脱离原始数据。

如果你想调用像 resize 这样的方法(改变 vector )那么你也可以提供一个非常量版本的函数(在 const 上重载)是在 C++ 中允许):

std::vector<int>& get_v()
{
return v;
}

如果您有一个指向A 实例的const 指针(或引用),编译器将调用const 版本。否则 if 将调用非 const 版本。

关于c++ - 当容器作为私有(private)成员在类中时如何访问容器方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607597/

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