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

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

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这个类作用域

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

热门文章

最新文章