• C++——指针5


    8.2 指向类的静态成员的指针

    对类的静态成员的访问不依赖于对象,可以用普通的指针来指向和访问。

    //通过指针访问类的静态数据成员

    #include <iostream>

    using namespace std;

    class Point //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);       //声明对象A

             cout<<"Point A,"<<A.GetX()<<","<<A.GetY();

             cout<<" Object id="<<*count<<endl;   //直接通过指针访问静态数据成员

             Point B(A); //声明对象B

             cout<<"Point B,"<<B.GetX()<<","<<B.GetY();

             cout<<" Object id="<<*count<<endl; //直接通过指针访问静态数据成员

    }

    //通过指针访问类的静态函数成员

    #include <iostream>

    using namespace std;

    class Point //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);       //声明对象A

             cout<<"Point A,"<<A.GetX()<<","<<A.GetY();

             gc();  //输出对象序号,直接通过指针访问静态数据成员

             Point B(A); //声明对象B

             cout<<"Point B,"<<B.GetX()<<","<<B.GetY();

             gc();  //输出对象序号,直接通过指针访问静态数据成员

    }

  • 相关阅读:
    前台 图片上传 上传预览 调用上传服务(多张图片展示)
    正则表达式验证,只能输入数字
    点击文本框搜索,出现在下拉列表中
    keycode 锁键盘按键(只能输入数字)
    Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
    map 理解
    mybatis 关联关系查询 java
    mybatis 批量插入值的sql
    EJB
    JPA概要
  • 原文地址:https://www.cnblogs.com/lemaden/p/10238003.html
Copyright © 2020-2023  润新知