C++中的靜態方法的含義是什麼? 據我所知它和Java一樣:沒有必要爲了調用靜態方法而創建類的實例。 我記得,在C語言中,我們使用靜態聲明來使它們變爲私有。 如何在C++中創建私有方法? 比方說,我要計算與輔助函數的一些計算:C++中的靜態方法
class A{
foo();
};
A::foo(){
int a=doSomCalculations();
}
我如何定義doSomecalculations所以這將是彷彿私有的輔助方法,在Java中?
C++中的靜態方法的含義是什麼? 據我所知它和Java一樣:沒有必要爲了調用靜態方法而創建類的實例。 我記得,在C語言中,我們使用靜態聲明來使它們變爲私有。 如何在C++中創建私有方法? 比方說,我要計算與輔助函數的一些計算:C++中的靜態方法
class A{
foo();
};
A::foo(){
int a=doSomCalculations();
}
我如何定義doSomecalculations所以這將是彷彿私有的輔助方法,在Java中?
在C++中,如果你不明確狀態的東西是public
,這將是private
默認。所以如果你想讓foo()
在你的課堂上成爲public
,你需要這樣說。
class A{
public:
foo();
private:
void doSomCalulations();
};
A::foo(){
int a=doSomCalculations();
}
作爲你的C static
事情評論,我不知道任何東西說static
使得任何private
在C. C沒有的private
和public
概念。在C中,您只有struct
類型,默認情況下全部爲public
。
在C++ struct
默認情況下所有成員public
。如果你想在一個struct
一個private
成員,你必須明確地說明它,就像這樣:
struct my_struct
{
int some_public_member;
private:
int my_private_member;
};
OTOH,有在C,這意味着internal linkage
static
。也許你是這樣指的。
靜態INT doSomCalculations(){ ... }
(我不能點擊此處查看)。
我能問爲什麼這個解決方案是降級?這類似於某些else回答誰詳述了更多。 – 2012-02-08 10:10:19
我沒有downvote,但也許是因爲你沒有詳細說明? – nabulke 2012-02-08 10:30:31
謝謝你,我很新的計算器,所以我會花更多的時間到我未來的答案。 – 2012-02-08 10:36:29
正如你所說,靜態方法並不要求你有一個對象的實例。 該方法在該對象的實例之間共享。 在C++中,您可以通過以下方式聲明一個私有方法:
class YourClass {
public:
void publicMethod();
private:
void privateMethod();
};
您得到在一類背景與「私人」糊塗文件範圍「靜態」。
爲了在一個類中的方法或數據項是私有的,只是把它的「私人」而不是類的公共部分,這
class Foo
{
private:
int dosomething();
public:
Foo();
};
然後DoSomething的()只能在Foo的方法中調用。靜態函數
class Foo { public: static wibble(); }
會像在Java satic功能,你可以在無需一個Foo實例調用foo ::維布勒()。
我相信在文件鏡頭中使用靜態是不推薦使用的,我們鼓勵使用匿名名稱空間來代替。
static int iamrunninoutofnames() { .... }
對聲明的文件是全局的,但在文件外部不可用。
namespace { int iamrunninoutofnames() { .... } }
實際上是相似的,但如果你仔細使用它可以更加靈活。
如果它在'struct'中呢? ;) – Nim 2012-02-08 10:07:55
@Nim在我的答案中添加了一些數據 – 2012-02-08 10:34:59