社区
C++ 语言
帖子详情
类成员函数问题
处处留心
2013-09-06 10:34:15
如果我在CA类中声明一个CB类的指针。没有对这个指针进行new,液没有初始化赋空值。
为什么,我可以用这个指针调用CB类的非静态公有成员函数?这个函数是在什么时候压栈的。
这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数?
急需答案,谢谢
...全文
63
5
打赏
收藏
类成员函数问题
如果我在CA类中声明一个CB类的指针。没有对这个指针进行new,液没有初始化赋空值。 为什么,我可以用这个指针调用CB类的非静态公有成员函数?这个函数是在什么时候压栈的。 这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数? 急需答案,谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++
类
成员函数
指针
提出疑问 首先问大家一句,什么是函数指针? 肯定有的人会这样回答,函数指针?不就是指向函数地址的一个指针吗?或者就是一个存放着一个函数首地址的变量? 当然,那些有点底层基础的肯定会这样说,函数就是一堆连续的机器码,而函数指针,就是存放了这堆连续机器码首地址的变量。 那么大家是不是回答的时候,考虑的地方是不是仅仅局限于 一般的函数????那么
成员函数
呢??? 为什么得强调
成员函数
呢?因为
成员函数
包括了虚函数和非虚函数(这里涉及虚表
问题
,可以先简单看看列出的虚函数系列,否则接下来
问题
会有点难以接受。) 虚函数
类
成员函数
的地址
如果是static
类
型的
类
成员函数
,可以输出其地址,假如是
类
a;
成员函数
是staticshuchu();则可以这样输出它的地址。cout 一个
类
在不继承(或者单继承)、多继承、virtual继承、未定义这四种情况下,其“
成员函数
指针”的大小分别是4, 8, 12, 16字节。 以下是转帖: 摘要:介绍了如何取
成员函数
的地址以及调用该地址. 关键字:C++
成员函数
this指针 调用约定
类
成员函数
作为线程函数
-------------------
类
成员函数
不能作为线程函数--------------------------- 一般来说,C++的
类
成员函数
不能作为线程函数。这是因为在
类
中定义的
成员函数
,编译器会给其加 上this指针。请看下列程序: #include "windows.h" #include <process.h> class ExampleTask { ...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章