zoukankan      html  css  js  c++  java
  • 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();  //输出对象序号,直接通过指针访问静态数据成员

    }

  • 相关阅读:
    关于java中面向对象特征的总结
    Jemter TCP压测坑:Hex-encoded binary string contains an uneven no. of digits,Hex-encoded binary string contains an uneven no. of digits
    distinct&group by去重的区别
    Idea从gitee上clone项目时候相关问题
    Nginx正向代理
    docker安装MySQL5.7
    Ubuntu server18.04.5环境配置
    Ubuntu18.04.5 server wifi的连接
    git commit 提交规范
    关于js的学习的推介
  • 原文地址:https://www.cnblogs.com/lemaden/p/10238003.html
Copyright © 2011-2022 走看看