强制分配返回的对象
force returned object to be assigned
有
没有办法,在C++,强制分配函数的返回值?即如果我有一个成员函数 foo
class myClass{
...
public:
T1 foo(T2 x){T1 y; /*something*/ return y;};
}
我可以在 main() 中调用它作为
myClass obj;
T1 a = obj.foo(x); //<--
我可以打更简单的电话吗
myClass obj;
obj.foo(x); //<--
(不存储返回的值)不知何故"非法"?
或者,我可以区分定义吗
T1 a = obj.foo(x);
obj.foo(x);
谢谢你的时间,对不起我的无知
如果你使用的是 g++,你可以使用
T1 foo(T2 x) __attribute__ ((warn_unused_result));
这将导致警告,而不是错误。 但是你可能会使用一些 -Werror=* 标志将其变成错误。 有关所有支持的函数属性,请参阅此处。
不,无法对返回的对象强制执行操作。
不,你无法区分
T1 a = obj.foo(x);
obj.foo(x);
在呼叫内部(至少不是以便携式标准方式。你可以破解调用堆栈之类的,但你为什么要这样做)。
简单的答案是否定的;但是你可以"强制它":
返回在没有任何引用时自动销毁的智能指针。在析构函数中抛出一些异常或进行 assert() 调用。为了防止正确使用时崩溃,您可以在该类中使用一些变量,并在确定不再需要对象时将其设置为 false,这将告诉析构函数不要抛出任何东西。
没有办法判断,但如果忽略返回值,良好的静态分析工具通常会显示警告。 我使用的那个附带MSVC2010当然可以。
相关文章:
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 从我的对象返回静态数组
- 将unique_ptr作为<Object>unique_ptr<常量对象返回>
- 从右值对象返回成员
- 视觉对象 返回 C++ 中的双精度值
- 为什么类型为 sf::Text 的对象返回不同的 getPosition().y 和 getLocalBounds().
- std::min_element 从类对象返回意外结果
- C++无效的对象返回语义
- const引用是否延长临时对象返回的临时对象的寿命
- 将 NULL 作为对象返回时未收到任何警告
- 如何在 C# 中从 com 对象返回数组(double[])
- 从重载运算符返回引用,并使用临时对象返回表达式
- Cin 对象返回值 c++
- 将变量作为类对象返回
- 使用可更改对象返回只读的最佳方法是什么
- 如何在Cython中从另一个包装对象返回包装的c++对象
- 当对象返回时,c++动态数组被清除
- 从带有动态字段的函数、对象返回
- 从堆栈上的匿名对象返回对*this的引用