
因为静态函数不属于成员,也就是说静态函数调用的时候不知道是哪个成员调用的这个函数。
但是成员函数必须知道是哪个成员调用的。
说的简单点是 成员函数带有this指针 而静态函数没有this指针。
#include <iostream>
using namespace std;
class Fun
{
public:
Fun(){x=0,y=0;}
Fun(int a,float b);
void display(Fun &fun);// 当前类对象的引用
private:
int x;
float y;
};
Fun::Fun(int a,float b)
{
x=a;
y=b;
}
void Fun::display(Fun &fun)// 输出引用类对象的数据成员
{
cout<<"x="<<funx<<"\ny="<<funy<<endl;
}
int main()
{
Fun fun1;// 定义对象fun1使用默认构造函数初始化
Fun fun2(8,15);// 定义对象fun2使用有参构造函数初始化
fun1display(fun2);// 调用对象fun1的成员函数输出对象fun2的数据成员x,y
fun2display(fun1);// 调用对象fun2的成员函数输出对象fun1的数据成员x,y
return 0;
}
是这个意思吗?
这个要分具体情况说,假设是类A的函数A1调用类B的成员函数B1
1假如是A1的参数里有类B的实例,直接引用就可以了
2假如是A1里只是需要B1的这个功能,并且参数里没有类B的实例,只有把B1设成静态函数或者把B设成A的成员变量(由于空间开销,可以把B设为静态的)
在c++中同一个类的成员函数之间是可以嵌套调用的,但是有些特例,细节如下:
1
c++同一个类的非静态成员函数可以直接嵌套调用;
2
c++同一个类的静态成员函数之间可以直接嵌套调用;
3
c++的非静态成员函数可以直接嵌套调用静态成员函数;
4
c++的静态成员函数不可以直接嵌套调用非静态成员函数。
C++中调用类的私有成员函数的方法就是,在该类中再声明定义一个公有成员函数
在其函数内部调用自己的私有成员函数,向外使用的话,在别的类中包含该类的头文件,就可以通过公有函数隐式的访问私有成员函数;
class A
{
private:
int a;
public:
int GetA()
{
return a;
}
}
类内写一个public的方法,访问该私有成员即可。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)