指向类的指向类的静态成员和静态函数成员的声明形式分别是什么?
书上两段指向类的指向类的静态成员和静态函数成员的程序分别如下:1、通过指针访问类的静态数据成员#include<iostream>usingnamespacestd;cl...
书上两段指向类的指向类的静态成员和静态函数成员的程序分别如下:
1、通过指针访问类的静态数据成员
#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;countP++;}
Point(Point&p);
int GetX() {return X;}
int GetY() {return Y;}
static int countP;
private:
int X,Y;
};
Point::Point(Point&p)
{
X=p.X;
Y=p.Y;
countP++;
}
int Point::countP=0; //静态数据成员定义性说明
int main()
{
int *count=&Point::countP; //声明一个int型指针,指向类的静态成员
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
cout<<" Object id="<<*count<<endl;
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
cout<<" Object id="<<*count<<endl;
}
2、通过指针访问类的静态函数成员
#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;countP++;}
Point(Point&p);
int GetX() {return X;}
int GetY() {return Y;}
static void GetC() {cout<<"Object id="<<countP<<endl;}
private:
int X,Y;;
static int countP;
};
Point::Point(Point&p)
{
X=p.X;
Y=p.Y;
countP++;
}
int Point::countP=0;
int main()
{
void(*gc)()=Point::GetC; //声明一个指向函数的指针,指向类的静态成员函数
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
gc();
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
gc();
}
在主函数中声明指向类的静态成员的赋值使用了“&”符号,而指向类的成员函数时没有用到,请问两者声明的语法定义分别是什么? 展开
1、通过指针访问类的静态数据成员
#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;countP++;}
Point(Point&p);
int GetX() {return X;}
int GetY() {return Y;}
static int countP;
private:
int X,Y;
};
Point::Point(Point&p)
{
X=p.X;
Y=p.Y;
countP++;
}
int Point::countP=0; //静态数据成员定义性说明
int main()
{
int *count=&Point::countP; //声明一个int型指针,指向类的静态成员
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
cout<<" Object id="<<*count<<endl;
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
cout<<" Object id="<<*count<<endl;
}
2、通过指针访问类的静态函数成员
#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;countP++;}
Point(Point&p);
int GetX() {return X;}
int GetY() {return Y;}
static void GetC() {cout<<"Object id="<<countP<<endl;}
private:
int X,Y;;
static int countP;
};
Point::Point(Point&p)
{
X=p.X;
Y=p.Y;
countP++;
}
int Point::countP=0;
int main()
{
void(*gc)()=Point::GetC; //声明一个指向函数的指针,指向类的静态成员函数
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
gc();
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
gc();
}
在主函数中声明指向类的静态成员的赋值使用了“&”符号,而指向类的成员函数时没有用到,请问两者声明的语法定义分别是什么? 展开
1个回答
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询