C++静态成员函数,怎么就访问私有变量了...

#include"stdafx.h"#include<iostream>usingnamespacestd;classA{staticintgetSum(Aa1,Aa2)... #include "stdafx.h"
#include<iostream>
using namespace std;
class A
{
static int getSum(A a1,A a2);
public:
int x;
A(int a)
{
x=a;
}
};
int A::getSum(A a1,A a2)
{
return a1.x+a2.x;
}
void main()
{
A a1(6);
A a2(8);
cout<<A::getSum(a1,a2);
}
展开
 我来答
天蝎神经侠侣
高粉答主

2015-06-16 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:776万
展开全部
C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。

左例中分别声明了成员函数void add(),成员变量int a,和静态成员函数 static void staticfunc(),静态成员变量 static int sa.
在staticfunc()的定义中,由于没有this指针,所以无法访问普通成员变量和成员函数.

方法:声明类的所有数据成员都是静态的。运用这种方式的话,静态的成员函数就能够直接地访问它们,例如:

此时,即可在staticfunc()中正常访问变量a了,如果还需访问add()函数,则将add()也冠以static即可.
该方法缺点是,很多情况下,你并不愿意将所有的变量都改成静态成员.或者有些变量不能是静态的.此时该方法失效.
arongustc
科技发烧友

2012-10-31 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:6352万
展开全部
static int getSum(A a1,A a2);

这个之前没有声明是public则一定是private,所以getSum是private函数,除非你在它前面加public:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0e28cae4
推荐于2016-02-15 · TA获得超过4016个赞
知道大有可为答主
回答量:1276
采纳率:85%
帮助的人:520万
展开全部
#include<iostream>
using namespace std;
class A
{
public:
// getSum 声明要放在这里。否则默认是 private 而不是 public

static int getSum(A a1,A a2);

A(int a)
{
x=a;
}
private:
int x;
};
int A::getSum(A a1,A a2)
{
return a1.x+a2.x;
}
int main()
{
A a1(6);
A a2(8);
cout<<A::getSum(a1,a2);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chiconysun
2012-10-31 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2738万
展开全部
static int getSum(A a1,A a2);这个要放到public中main函数的cout<<A::getSum(a1,a2);才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
走过路过15137
2015-07-09 · TA获得超过7586个赞
知道小有建树答主
回答量:1763
采纳率:62%
帮助的人:172万
展开全部
,静态成员函数只能访问静态成员变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式