Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类的类似PHP的语法 我只是想知道C++中是否可能。_C++_Oop_Object - Fatal编程技术网

类的类似PHP的语法 我只是想知道C++中是否可能。

类的类似PHP的语法 我只是想知道C++中是否可能。,c++,oop,object,C++,Oop,Object,在PHP(框架)中,我有时会看到类中的类(对象)和方法被以下人员访问: $this->encrypt->decode($msg, $key); 在我的一个计划中,我有以下内容: Directory *d = new Directory("dir"); d->open(); 是否可以改为: Directory *d = new Directory("dir")->open(); 所以这两个方法可以在同一行中执行?不,这是不可能的,除非目录类被设置为显式支持这一点。这通

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

$this->encrypt->decode($msg, $key);
在我的一个计划中,我有以下内容:

Directory *d = new Directory("dir");
d->open();
是否可以改为:

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

所以这两个方法可以在同一行中执行?

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

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

Directory("dir").open();

没有捕获返回的目录实例,PHP代码
$this->encrypt->decode($msg,$key)
正在调用当前类中
encrypt
上的
decode()
方法

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

同样,您不能在PHP中执行此操作:

$test = new Test()->method();
。。你不能在C++中做它,不,你不会期望在<代码> $Test< /COD>中出现代码< >测试< /COD>。在这种情况下,它将是新的实例化测试对象上的“代码>方法”(< /代码>)的返回。 也就是说,如果只需要
open()
(或根本不需要)的返回值,而不需要
目录的实例,您确实可以像您所说的那样内联它:

Directory("dir").open();

目录(“dir”).open(),但您不能在其中放入变量声明。实际上,从技术上讲,您可以使
打开
返回
*此
不必要地使用
目录d(目录(“dir.open());
谢谢您的回复:),这样就不可能有..“d->open()->文件();“?这不是创建一个新实例,而是一个糟糕的示例(就我而言)。@Phorce只要
.open()
返回一个自身的实例,这应该是可能的。不过,您的PHP示例是不同的。”。