你不能。從C++語法(重點是我的,不相關的部分,爲了清楚起見省略了),用於一個函數的聲明是:
function-definition:
decl-specifier-seqoptdeclarator ctor-initializeropt function-body
decl-specifier-seqoptdeclarator function-try-block
對於一類,它是:
class-specifier:
class-head { member-specificationopt }
member-specification:
member-declaration member-specificationopt
access-specifier : member-specificationopt
member-declaration:
decl-specifier-seqopt member-declarator-listopt ;
function-definition ;opt
::opt nested-name-specifier templateopt unqualified-id ;
using-declaration
template-declaration
member-declarator-list:
member-declarator
member-declarator-list , member-declarator
member-declarator:
declarator pure-specifieropt
declarator constant-initializeropt
identifieropt : constant-expression
最後declarator
是:
declarator:
direct-declarator
ptr-operator declarator
direct-declarator:
declarator-id
direct-declarator (parameter-declaration-clause) cv-qualifier-seqopt
exception-specificationopt
direct-declarator [ constant-expressionopt ]
(declarator)
當你CA n看到可以用於函數參數的類型也可以用作類成員。
+!爲你的努力。不過,無論如何,我懷疑這對我有幫助。 – PiotrNycz
@PiotrNycz LOL它只是意味着(從語法的角度來看)可以用作參數的函數**總是可以作爲類成員使用**(除了修飾符)。這意味着您不能阻止某個方法將其參數之一存儲爲類成員。 **即使您重寫賦值運算符**,它們也可以繞過任何使用指針,別名和強制轉換的類型檢查。你可以控制一個對象的創建方式(例如使用工廠方法),但僅此而已(並且它不會阻止對象將循環引用存儲到自身**中)。 –
關於指針的好處,謝謝。 – PiotrNycz