【发布时间】:2016-08-26 15:39:28
【问题描述】:
在 Java 中,我们可以创建一个新对象并将其传递给其参数中的方法,如下所示:
wrapper.set_state( new Medium() );
在 C++ 中与 this 等价的是什么? 我想我可以先创建对象然后传递它,但是能够在参数中创建它看起来更整洁。
【问题讨论】:
-
在c++中
wrapper.set_state(Medium() );没有错。 -
仅仅因为它在语法上有效并不意味着它是正确的做事方式。 C++ 不是 Java。它使用自己的习语。
-
这是一种方式。您也可以按值或常量引用传递。正确的解决方案取决于上下文。
-
如果您的包装器拥有介质,而单个介质仅由一个包装器拥有,则只需通过调用
std::unique_ptr传递wrapper.set_state( std::make_unique<Medium>() );标准库提供了出色的智能指针。 -
为了得到一个好的答案,你需要提供更多的上下文。对象是被传递对象的唯一所有者吗,它可以只是一个普通的成员变量吗?
标签: c++ oop methods parameters instantiation