社区
C++ 语言
帖子详情
类成员函数问题
处处留心
2013-09-06 10:34:15
如果我在CA类中声明一个CB类的指针。没有对这个指针进行new,液没有初始化赋空值。
为什么,我可以用这个指针调用CB类的非静态公有成员函数?这个函数是在什么时候压栈的。
这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数?
急需答案,谢谢
...全文
59
5
打赏
收藏
类成员函数问题
如果我在CA类中声明一个CB类的指针。没有对这个指针进行new,液没有初始化赋空值。 为什么,我可以用这个指针调用CB类的非静态公有成员函数?这个函数是在什么时候压栈的。 这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数? 急需答案,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大尾巴猫
2013-09-06
打赏
举报
回复
为什么,我可以用这个指针调用CB类的非静态公有成员函数? ------------------------------------------------------ 能这样做,不代表这样做是对的。就像数组越界不一定崩溃。 假如以后维护的人员在这个成员函数里使用了非静态的成员变量,那就糟了。
sduxiaoxiang
2013-09-06
打赏
举报
回复
不适用类里面的内存应该都不会挂的 NULL可以转化为各种类指针的
乃不知有汉
2013-09-06
打赏
举报
回复
为什么,我可以用这个指针调用CB类的非静态公有成员函数?
为什么不可以调用?这个调用在语法是正确的。
这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数?
当然可以调用类的非静态成员函数,非静态成员变量引用的时候会出错。
class B { public: void func() { cout << "func"; } void func_usemem() { cout << m_number; } protected: int m_number; }; int main() { B* p = NULL; p->func(); // 可以的哦不会崩溃的 相当于 func(NULL) p->func_usemem(); // 这个才崩溃 引用了 成员变量的 访问异常吧... 相当于 func_usemem(NULL) return 0; } p->func(); --> func(B* this=NULL) 这个函数内很幸运没有访问任何 this->member 所以不会崩溃 p->func_usemem(); -->func_usemem(B* this=NULL) cout << this->m_number; // this==NULL !!! 崩溃
freelancer_ex
2013-09-06
打赏
举报
回复
贴出你是怎么调用的。你是通过指针还是类名调用的成员函数?
ri_aje
2013-09-06
打赏
举报
回复
代码发上来看看。
【C/C++】
类
成员函数
指针 定义 使用方法
类
成员函数
编译器会默认加上一个隐藏的参数:this指针 所以定义
类
成员函数
的指针与普通的函数指针肯定会有所区别: C++ 提供了三种运算符 ::* .* ->.用于定义和使用
类
成员函数
指针 定义
类
成员函数
指针时,注意&和
类
名作用域不能省略 使用指针间接调用函数优的点: 调用便于分层设计、利于系统抽象、降低耦合度 使接口与实现分开 提高代码的复用性、扩展性。
类
成员函数
指针是指指向
类
中
成员函数
的指针 调用函数的两种方式: 通过函数名直接调用 通过函数指针间接调用 通过函数指针调用的好处:真正的函数
C++
类
成员函数
作回调函数
C++
类
成员函数
作回调函数,示例:C++消息注册派发模式
c++
类
成员函数
指针
提出疑问 首先问大家一句,什么是函数指针? 肯定有的人会这样回答,函数指针?不就是指向函数地址的一个指针吗?或者就是一个存放着一个函数首地址的变量? 当然,那些有点底层基础的肯定会这样说,函数就是一堆连续的机器码,而函数指针,就是存放了这堆连续机器码首地址的变量。 那么大家是不是回答的时候,考虑的地方是不是仅仅局限于 一般的函数????那么
成员函数
呢??? 为什么得强调
成员函数
呢?因为
成员函数
包括了虚函数和非虚函数(这里涉及虚表
问题
,可以先简单看看列出的虚函数系列,否则接下来
问题
会有点难以接受。) 虚函数
详解函数指针和
类
成员函数
指针
作者:倾夜·陨灭星尘 一.什么是函数指针? 函数指针,顾名思义即指向函数的指针。 如果要问,为什么能用一个指针指向一个函数呢?我觉得要理解这个
问题
,以及要理解后面的函数指针和
类
成员函数
指针,没有什么比从计算机原理的角度来理解更容易了。这里就简要回顾一下相关知识。 众所周知,计算机(图灵机)执行程序的基本流程就是:取指令->执行指令->取下一条指令->……。取指令的位置由一个寄存器PC决定。
C++中
类
成员函数
作为回调函数
回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的
成员函数
作为回调函数将发生错误,甚至编译就不能通过。 普通的C++
成员函数
都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其
成员函数
从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++
类
的多个实例可以共享成
C++ 语言
64,643
社区成员
250,606
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章