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;
}
这样也可以
#include <iostream>
using namespace std;
class base{
private:
void show() {cout << "------------" << endl;}
friend void showOut(base &b);
};
void showOut(base &b) {
b.show();
}
int main(){
base b1;
showOut(b1);
}