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

    }

  • 相关阅读:
    读本地json的方法
    告诉你如何应对HR索要薪资证明!
    函数声明与函数表达式
    原型的动态性
    工作实际需求andjs进阶图书
    表单元素操作,button,点击下载按钮实现-长知识
    grunt注意要点
    重新认识块级元素--DIV
    GO语言学习:变量间赋值
    GO语言学习:单通道
  • 原文地址:https://www.cnblogs.com/lemaden/p/10238003.html
Copyright © 2011-2022 走看看