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

2024-11-28 10:56:39
推荐回答(5个)
回答1:

C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。

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

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

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

回答2:

static int getSum(A a1,A a2);

这个之前没有声明是public则一定是private,所以getSum是private函数,除非你在它前面加public:

回答3:

#include
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<}

回答4:

static int getSum(A a1,A a2);这个要放到public中main函数的cout<

回答5:

,静态成员函数只能访问静态成员变量。