c++在类外是不能直接调用私有成员函数的
c++在类外是不能直接调用私有成员函数的,比如
#include <iostream>
using namespace std;
class A3 {
void show3() {
cout << "class A3"<< endl; //注意,类内部默认是私有
}
};
int main()
{
A3 obj3;
obj3.show3(); //这里出错
return 0;
}
有两种方法能间接调用私有函数
1.通过类的public成员函数调用private成员函数:
#include <iostream>
using namespace std;
class Test
{
public:
void fun2()
{
fun1();
}
private:
void fun1()
{
cout<<"fun1"<<endl;
}
};
int main()
{
Test t;
t.fun2();
return 0;
}
2.通过类的友元函数调用该类的private成员函数,但是该private成员函数必须设为static,这样就可以在友元函数内通过类名调用,否则无法调用
#include <iostream>
using namespace std;
class Test
{
friend void fun2(); //fun2()设为类Test的友元函数
private:
static void fun1()
{
cout<<"fun1"<<endl;
}
};
void fun2()
{
Test::fun1();
}
int main()
{
fun2();
return 0;
}