我只是想知道这在 C++ 中是否可行。
在 PHP(框架)中,我有时会看到类(对象)和类中的方法被以下访问:
$this->encrypt->decode($msg, $key);
在我的一个程序中,我有以下内容:
Directory *d = new Directory("dir");
d->open();
是否可以改为:
Directory *d = new Directory("dir")->open();
那么这两个方法可以在同一行执行吗?
不,这是不可能的,除非 Directory 类被设置为明确支持这一点。这通常涉及使类中的大多数方法返回对自身的引用,以便您可以将方法调用链接在一起。
不过,您的 php 示例完全不同。您发布的示例的 C++ 版本将是:
Directory("dir").open();
没有捕获返回的 Directory 实例Directory("dir")
PHP 代码在当前类$this->encrypt->decode($msg, $key);
中调用decode()
方法。encrypt
您拥有的代码正在执行初始化类然后调用它的不同任务。
以同样的方式你不能在 PHP 中做到这一点:
$test = new Test()->method();
.. 你也不能在 C++ 中做到这一点,不。在这种情况下,您不会期望 in 的实例Test
,$test
而是method()
在新实例化的测试对象上返回 of。
也就是说,您确实可以像您说的那样内联它,如果您只需要open()
(或根本不需要)的返回值而不是 的实例Directory
:
Directory("dir").open();