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; }
标签:调用,类外,私有,void,private,c++,成员,函数 From: https://www.cnblogs.com/uacs2024/p/18052723