我只是想知道這是否可能在C++中。類PHP的語法
在PHP(框架),我有時會看到類(對象)和方法中的類被訪問:
$this->encrypt->decode($msg, $key);
在我的節目之一,我有以下幾點:
Directory *d = new Directory("dir");
d->open();
是有可能有:
Directory *d = new Directory("dir")->open();
所以這兩個方法可以在同一行執行?
我只是想知道這是否可能在C++中。類PHP的語法
在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);
被調用當前類中的encrypt
的decode()
方法返回。
你的代碼正在執行初始化類的不同的任務,然後調用它。
在你不能在PHP做同樣的方式:
$test = new Test()->method();
..你不能做到這一點在C++或者沒有。在這種情況下,你不會指望在$test
的Test
一個實例,它反而會成爲method()
一個新實例測試對象上的回報。
這就是說,你的確可以內嵌像你說的,如果你只需要對open()
(或什麼都沒有)的返回值,而不是Directory
實例:
Directory("dir").open();
感謝您的答覆:)所以它不可能有?..「D->打開() - >文件();」而不是創建新實例,這是一個壞榜樣給(對我而言) – Phorce
@Phorce,應該是可以的,只要'。 open()'返回了它自己的一個實例。但是,你的PHP例子是不同的。 –
沒有,除非Directory類的成立,明確支持這個是不可能的。這通常涉及使類中的大多數方法返回對自身的引用,以便可以將方法調用鏈接在一起。
你的php的例子是完全不同的東西。 C++版本您發佈將是例子:
Directory("dir").open();
沒有捕捉Directory實例與Directory("dir")
'目錄(「目錄」) .open();',但是你不能在那裏放入一個變量聲明。 – chris
其實,你可以在技術上做'open'回報'* this'中不必要地使用'目錄d(目錄(「DIR)。開());' – chris