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