C++成员变量指针的用途(使用场景)



<span style="font-size:18px;">#pragma 成员指针的使用场景

#include <iostream>
using namespace std;

//结构体
struct Date {
    int year;
    int month;
    int day;
    void show(){
        cout << year << ' ' << month << ' ' << day << endl;
    }
};


//我要遍历一个数组
//这第一个参数不是传进来一个对象 而是一个数组的首地址  第二个参数是数组元素的个数

/*
 *
 *
 *
 
void print(Date *ds, int n){
    for (int i = 0; i < n; i++) { //遍历数组输出年  如果我还要输出月和日呢?岂不是得再写几个方法???
        cout << ds[i].year << endl;
    }
}

void print2(Date *ds, int n){
    for (int i = 0; i < n; i++) { //遍历数组输出月
        cout << ds[i].month << endl;
    }
}


void print3(Date *ds, int n){
    for (int i = 0; i < n; i++) { //遍历数组输出日
        cout << ds[i].day << endl;
    }
}
 *
 *
 *
 */

//现在我只想写一个函数  该如何?  一般封装方法 就是把几个方法不同的地方封装出来,那么几个方法就都可以用了  这几个方法的不同点就在于访问不同的成员变量,那么我把要访问的成员变量传进来就可以

void print(Date *ds, int n, int Date::* pd){ //pd是一个成员变量指针
    for (int i = 0; i < n; i++) { //遍历数组输出年  如果我还要输出月和日呢?岂不是得再写几个方法???
        cout << ds[i].* pd<< endl;
    }  //那么在调用这个函数的时候只要传进来不同的 成员变量的地址 就可以访问成员变量了
    
#pragma 有限制的是传进来的地址 必须是 int类型 ,如果是double就不可以了 那只能方法重载了!
    
}




//主函数

int main(){
    //用C语言的方式 声明一个数组
    Date ds[5] = {{2012,1,20},{2013,2,30},{2014,3,31},{2015,12,32},{2016,13,33}};
    // C++的方式提倡的是创建对象,通过对象访问成员变量
    
    //打印年  就要传进年的地址
    print(ds, 5,&Date::day);
#pragma 这是成员指针一个用途
    
    

    //难点1  如何声明 成员变量指针  (成员类型  结构类型名::*指针变量名)
    //难点2  如何获取 成员变量地址  (&结构类型名::成员)
    
    return 0;
}
</span>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值