类的PHP-Like语法

时间:2013-01-19 23:02:16

标签: c++ oop object

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

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

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

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

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

是否可以改为:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

Directory("dir").open();

没有捕获使用Directory("dir")

返回的Directory实例

答案 1 :(得分:1)

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

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

以同样的方式在PHP中无法做到这一点:

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

..你也不能用C ++做,不。在这种情况下,您不希望在Test中有$test的实例,而是在新实例化的测试对象上返回method()

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

Directory("dir").open();