不从成员函数C 存储返回值认为不良习惯
Is it considered bad practise to not store the return value from a member function c++
说我有一个返回整数的成员函数,在调用会员函数而不存储返回值的奇数情况下会被视为不良练习。
编辑。
一个示例将是将项目附加到向量并返回附加项目的索引的函数。
一个简化的示例。
#include <vector>
using namespace std;
vector<int> myVector;
int AppendVector(int value)
{
myVector.push_back(value);
}
int main()
{
AppendVector(3);
AppendVector(4);
int indexOfValue = AppendVector(2);
// do action on appended value
}
否,这样做是很普遍的。有很多函数在忽略返回值的同时定期使用。
您可能使用或看到的一些示例:
-
std::printf
返回书面字符的数量。 -
operator<<
返回流,最终被丢弃 -
std::vector::erase
在删除最后一个元素之后返回迭代器 -
std::map::insert
返回迭代器和状态
对于返回值特别重要的情况,C 17添加了[[nodiscard]]
属性。
c 17的主题,您必须使用特定于GCC的__attribute__((warn_unused_result))
等编译器的内容。有关更多详细信息,请参见此答案。
这将完全取决于返回价值的含义,以及通过进行方法呼叫来实现的呼叫者。
编写呼叫代码的人绝对应该考虑他想处理的回报值(如果有的话(;一个常见的新手错误是忽略回报率,而不是检查回报率,因此无法采取适当的行动,例如如果返回值表明该方法的操作失败了。
您可能会看到一个半常见的成语是:
(void) someObject.Method();
(void(前缀无需做任何事情(编译器会忽略它(,但它确实是人类读者的指标,即写下该行的人是故意返回值,而不是不明白返回值。它不会改变程序的行为方式,但它确实使未来的读取器的源代码不知道他们是否正在考虑错误或忽略是故意的。
相关文章:
- 复制和交换习惯用法与移动操作之间的交互
- 命名参数习惯用法和(抽象)基类
- C++ 命名参数习惯用语 - 未设置字符串属性
- 为什么"using System;"不被视为不良做法?
- 在解决链表问题时创建一个额外的节点是一个好习惯吗?
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标
- 删除复制构造函数的 Intel 13.1.2 中不良C++行为的解决方法
- 复制交换习惯用法-我们可以在这里使用动态强制转换操作吗
- 错误:使用复制和交换习惯用法的交换函数中"operator="的重载不明确
- 检测习惯用语和默认参数类型匹配
- 如何在检测习惯用语中要求精确的功能签名?
- 如果 constexpr 和依赖假static_assert形成不良?
- C++检测习惯用语失败与继承
- 让二传手返回布尔值是好习惯吗?
- C++移动分配可防止复制交换习惯用法
- 不从成员函数C 存储返回值认为不良习惯
- shared_from__this,asio的不良弱ptr例外
- 试图初始化矩阵C 时的不良同种
- 使用默认参数健康习惯还是不良参数