0

我只是想知道这在 C++ 中是否可行。

在 PHP(框架)中,我有时会看到类(对象)和类中的方法被以下访问:

$this->encrypt->decode($msg, $key);

在我的一个程序中,我有以下内容:

Directory *d = new Directory("dir");
d->open();

是否可以改为:

Directory *d = new Directory("dir")->open();

那么这两个方法可以在同一行执行吗?

4

2 回答 2

1

不,这是不可能的,除非 Directory 类被设置为明确支持这一点。这通常涉及使类中的大多数方法返回对自身的引用,以便您可以将方法调用链接在一起。

不过,您的 php 示例完全不同。您发布的示例的 C++ 版本将是:

Directory("dir").open();

没有捕获返回的 Directory 实例Directory("dir")

于 2013-01-19T23:09:24.313 回答
1

PHP 代码在当前类$this->encrypt->decode($msg, $key);中调用decode()方法。encrypt

您拥有的代码正在执行初始化类然后调用它的不同任务。

以同样的方式你不能在 PHP 中做到这一点:

$test = new Test()->method();

.. 你也不能在 C++ 中做到这一点,不。在这种情况下,您不会期望 in 的实例Test$test而是method()在新实例化的测试对象上返回 of。

也就是说,您确实可以像您说的那样内联它,如果您只需要open()(或根本不需要)的返回值而不是 的实例Directory

Directory("dir").open();
于 2013-01-19T23:09:26.453 回答