gpt4 book ai didi

c++ - 获取和设置内部数据 : return type, 错误情况下的行为

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:54 25 4
gpt4 key购买 nike

Given 是一个包含内部数据的 C++ 类,该类应向外部公开并且也应是可修改的。

class Container {
public:
... get( int key ) const;
... set( int key, int value );
private:
std::vector<int> m_values;
};

问题是 get()set() 最好得到什么返回类型。对于 get():

  1. const int& get( key ),引用常量值。
  2. const int* get( key ),指向常量值的指针。

当使用引用时,当容器中不存在给定的键时,一定会发生一些事情。异常(exception)?或者只是访问 m_values 并让它抛出?依赖于 assert

指针返回类型可以返回 nullptr 指示无效操作。然而,这是否意味着调用者通过请求不存在的东西通常做错了什么?

对于 set():

  1. 无效集(键,值)
  2. bool 集(键,值)

void 版本忽略无效键或值。再次:如果出错怎么办?

bool 版本在成功时返回 true,在键和/或值无效时返回 false。同样与此处的 get() 相同:用户在指定无效键和/或值时可能做错了什么。

您是想让应用程序以某种方式崩溃以表明用户使用错误还是依赖于用户检查结果返回值?

最佳答案

对于getter,我也会考虑按值返回。返回指针 (yuk) 或引用限制了以后重新实现类内部的选项,除非您也乐于更改接口(interface)。

作为一个人为的例子,考虑:

class Person
{
public:
// Returns height in metres
const int &getHeight() const { return height; }

private:
int height; // Height in metres
};

现在以后,如果我们决定更改内部结构以以毫米为单位存储高度怎么办?我们不能这样做:

const int &getHeight() const { return height / 1000; }

至于二传手,嗯,失败时如何处理完全由您决定。

关于c++ - 获取和设置内部数据 : return type, 错误情况下的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8556003/

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