指针

// gcc version egcs-2.91.57 19980901 (egcs-1.1 release)

#include
using namespace std;

class point{
      int moveCenterPoint();
public:
      int x,y;
      point(int=1,int=1);
      int instance();
      friend int f(point &); // 友元函数
};


int main(){

    // 以int数据类型为例
      int a = 1;
      int b = 2;

     // 常量指针 int const *i
      int const *i = &a;
      i = &b; // 更改自己地址指向

      // 指针常量 int *const j
      int *const j = &a;
      *j = b; // 更改a内容
      //------------------------------------------
    // 类成员指针,对象成员指针
    
    // 类数据成员指针

      int point::*x1 = &point::x;

      // 对象数据成员指针
      point p;
      int *y1 = &p.y;

      cout<<p.instance()<<endl; // 1*1+1*1 = 2

      p.*x1 = 2;
      cout<<p.instance()<<endl; // 2*2+1*1 = 5

      *y1 = 3;
      cout<<p.instance()<<endl; // 2*2+3*3 = 13

     // 类成员函数指针
      int (point::*pInstance)();
      pInstance = &(point::instance); // 不同编译器写法不同

      cout<<(p.*pInstance)()<<endl; // 13

     
     //------------------------------------------
    // 函数指针

      int (*p1)(point &);
      p1 = &(f); // 不同编译器写法不同
      cout<<(*p1)(p)<<endl; // 2*(2+1) + 3*(3+1) = 18

      return 0;
}

// x,y默认值都为1,且如果point传递参数则x=a,y=b
point::point(int a,int b){
      x = a;
      y = b;
}
int point::instance(){
      return x*x+y*y;
}
int point::moveCenterPoint(){
      return x*(x+1)+y*(y+1);
}
int f(point &p){
      return p.moveCenterPoint();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值