Chinaunix首页 | 论坛 | 博客
  • 博客访问: 340010
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1293
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-07 11:17
个人简介

爱运动,爱看书,爱生活!

文章分类

全部博文(73)

文章存档

2014年(7)

2013年(66)

分类: C/C++

2013-12-30 19:24:14

在windows下,能够定义一个类的空指针并且能够用这个空指针调用类的成员函数(但成员函数访问类的成员变量就会出问题)
如:
定义类:
  1. class Person{
  2. private:
  3.     int a;
  4. public:
  5.      Person(){}
  6.      ~Person(){}
  7. void showInt(){
  8.     std::cout<<"this is a test!"<
  9. }
  10. };           
             
这个类在windows下可以这样使用: 
                         Person *p = NULL:
                           p->showInt();
当然,在gcc中这是不可以的,这样往往会导致段错误。
但在windows下却可行,原因主要还是两种编译器处理方式不同,应该是对this指针的处理方式不同。
需要注意的是,当showInt()访问成员变量时,在vs2010下也能够编译运行,并不提示任何错误,但是程序执行到这个地方时,会退出,放弃执行后续的代码。

                 
                                                                     
阅读(3608) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

ygfinsight2014-01-17 12:22:51

automation_mb:gcc下也能通过编译吧

嗯,gcc也能编译通过,执行的时候才报错。

回复 | 举报

automation_mb2014-01-16 20:22:43

gcc下也能通过编译吧