在C++中,[[nodiscard]] 是一个属性标记,用于告诉编译器在调用函数或方法时,其返回值应该被使用,避免忽略返回值导致的潜在问题或错误。 这个属性可以应用于函数或方法的声明前面,示例代码如下: - #include <iostream>
- [[nodiscard]] int getValue() {
- return 42;
- }
- int main() {
- getValue(); // 在这里调用函数,但忽略了返回值
- // 编译时会产生警告,提示getValue函数的返回值被忽略
- // 正确的用法:
- int result = getValue(); // 将返回值赋给一个变量,或者使用它进行其他操作
- std::cout << "Value is: " << result << std::endl;
- return 0;
- }
複製代碼在上面的示例中,getValue() 函数被声明为 [[nodiscard]],这意味着在调用它时应该使用其返回值。在 main() 函数中,第一次调用 getValue() 时并没有将返回值存储起来或者用于其他操作,这将触发编译器的警告,提醒开发者可能存在逻辑错误或者不良实践。 通过在关键函数或方法前添加 [[nodiscard]] 属性,可以帮助开发者在编译阶段捕获并避免一些潜在的bug。
|