[英]What's left for non-static functions c++?
這些天,我的代碼中發生了一些奇怪的事情。 每次必須構建新的成員函數時,或者每次返回到先前定義的成員函數時,我都認為:
“嘿,無論這個類的哪個實例正在調用它,這都是完全相同的過程,所以讓我們使其靜態!”
而且我還覺得這樣會減少內存消耗,因為每個實例都不必“執行”該函數的一個實現,對嗎?
因此,不要像這樣:
class Foo
{
int _attributes;
double methods(int parameters)
{
// do stuff using..
_attributes;
};
};
我最終會遇到如下問題:
class Foo
{
int _attributes;
static double methods(int parameters, Foo* instance)
{
// do stuff using..
instance->_attributes;
};
};
而且我看不到任何不會再通過這種方式轉換的功能。 我所有的功能都變成了靜態,我覺得某處出了點問題。
我想念什么? 再次,使用非靜態方法有什么用? XD
祝賀您-您已經重新創建了C語言的面向對象編程。 這正是我們在C中進行OOP的方式。實際上,C ++也是如此。 它向每個名為this
函數添加一個參數,該參數與其余參數一起被推送。 您正在明確地做同樣的事情。
為什么要使用成員函數呢? 可讀性。 myInstance.foo()
比myClass::foo(all, my, parameters, myInstance)
更具可讀性
調用非靜態函數時。
Foo foo;
foo.doSomething(ArgType arg1, ArgType2 arg2,...);
編譯到。
Foo foo;
doSomething(&foo, ArgType arg1, ArgType2 arg2,...);
我在這里回答了有關Java的類似問題,但是兩種語言的想法都是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.