类成员指针和类成员变量指针

简介: 类成员指针和类成员变量指针

1类成员指针

1.1对于普通成员函数

定义普通成员函数指针: 类名::*函数指针变量名字

获取类成员函数地址: &类名::成员函数名

class Test
{
    public:
        void myfunc(int temp) { };
}
在main主函数中
void (Test:: *pfunc)(int); //类成员函数指针变量的定义,变量名字是pfunc
pfunc = &Test::myfunc; //类成员函数指针变量被赋值

对于类对象调用成员函数: 类对象名.*函数指针变量名字

对于类对象指针调用成员函数: 指针名->*函数指针变量名字

CT ct, *pct;
pct = &ct;
(ct.*pfunc)(100);
(pct->*pfunc)(200);

1.2对于虚成员函数

和普通成员函数调用方法一样,只不过这个指针指向的是虚函数地址,因为类中有虚函数,会产生一个虚函数表

1.3对于静态成员函数

声明静态成员函数指针: *函数指针变量名

获取类成员函数地址: &类名::成员函数名

因为静态成员是跟着类走的,所以在类里相当于是全局的,所以不用再用类名::来限定作用域

void (* myfpointstatic)(int) = &CT::staticfunc; //定义一个静态的类成员函数指针并给初值
myfpointstatic(100); //直接使用静态成员函数指针名即可调用静态成员函数

2.类成员变量指针

2.1对于普通成员变量

public:
    int m_a;
在main主函数中
int CT::*mp = &CT::m_a;

跟踪调试发现这个指针并不是真正意义的指针,他不是指向内存的地址,而是这个成员变量和该类对象首地址之间的偏移量

2.2对于静态成员变量

则是一个真正的地址,当然也不用加CT这个类作用域

相关文章
|
3月前
|
C++
【编码狂想】指针航行,链表魔法,解锁结构体和类的编程幻境
【编码狂想】指针航行,链表魔法,解锁结构体和类的编程幻境
58 1
|
16天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
|
23天前
|
存储 编译器 程序员
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
|
2月前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
2月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
2月前
|
存储 安全 程序员
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
71 0
|
2月前
|
C++
c++类和对象一对象特楼一this指针的用途讲解
c++类和对象一对象特楼一this指针的用途讲解
8 1
|
3月前
|
存储 C++
C++类与对象【对象模型和this指针】
C++类与对象【对象模型和this指针】
|
3月前
|
编译器 C语言 C++
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
38 0
|
4月前
|
存储 Java 编译器
C++——类和对象(了解面向过程和面向对象、初步认识类和对象、类大小的计算、this指针)
C++——类和对象(了解面向过程和面向对象、初步认识类和对象、类大小的计算、this指针)