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