类成员函数问题

处处留心 2013-09-06 10:34:15
如果我在CA类中声明一个CB类的指针。没有对这个指针进行new,液没有初始化赋空值。
为什么,我可以用这个指针调用CB类的非静态公有成员函数?这个函数是在什么时候压栈的。

这个没有new的时候,没有调用构造函数,CB的非静态成员变量是无法调用的。为什么可以调用非静态成员函数?

急需答案,谢谢
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
代码发上来看看。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧