• 成员指针


    成员变量指针

    静态成员变量、静态成员函数与对象无关,静态成员指针与普通指针一致

    本质就是特定成员变量在对象实例中的相对地址,解引用时再根据调用对象的地址计算该成员变量的绝对地址

    定义

         类型 类名 ::* 成员变量指针 = &类名 ::成员变量  

    使用

        对象.*成员变量指针对象指针->*成员变量指针 =====>  .*成员变量解引用->* 间接成员变量解引用

    成员函数指针

     虽然成员函数并不存储在对象中,但也要通过对象或者对象指针对成员函数指针解引用,其目的只有一个,即提供this指针

    定义

      返回类型(类型::*成员函数指针)(形参表) = &类名::成员函数名;

    使用

      (对象.*成员函数指针)(实参表)

      (对象指针->*成员函数指针)(实参表)

    #include "stdafx.h"
    #include<iostream>
    #include<string>
    using namespace std;
    class Student
    {
    public:
        Student(const string & name = "",int age = 0):m_name(name),m_age(age){}
        string m_name;
        int m_age;
        static int m_data;
        static int add(int x , int y)
        {
            return x+y;
        }
        void who()
        {
            cout << m_name << " "
                 << m_age << endl;
        }
    };
    int Student::m_data = 100;
    int _tmain(int argc, _TCHAR* argv[])
    {//成员变量指针
        string Student::*pname = &Student::m_name;//pname的初始化不需要对象,他将指向任何对象的m_name
        //存成员变量的偏移量,在解引用时,使用起始位置+偏移量
    
        int Student ::*page = &Student::m_age;
        Student s1("张飞",24),s2("赵云",25);
        //成员函数指针
        void (Student::*pwho)(void) = &Student::who;
        //成员指针时,取地址必须写
        cout << s1.*pname << endl;//(.*,成员指针解引用运算符->*间接成员指针解引用运算符)
        cout << s2.*pname <<endl;
        cout << s1.*page << endl;
        cout << s2.*page << endl;
        (s1.*pwho)();
        (s2.*pwho)();
        
        int *pdata = &Student::m_data;
        cout << *pdata << endl;
        int(*padd)(int ,int ) = Student ::add;
        cout << padd(100,200) << endl;
    
        system("pause");    
        return 0;
    }
  • 相关阅读:
    Linux内核中的jiffies 以及时间的获取time
    linux2.6内核启动流程简述
    qt 显示控件 导致频闪
    V4L2应用程序框架
    linux 目标机 windows 图形界面ftp登录
    linux2.4内核启动流程简述及2410主频修改
    块设备驱动编写总结一(ZT)
    backlight misc驱动范例 及应用程序范例
    如何通过结构中的某个成员地址获取结构本身的指针???
    我是怎么招聘程序员的
  • 原文地址:https://www.cnblogs.com/day-up/p/5164447.html
Copyright © 2020-2023  润新知