Chinaunix首页 | 论坛 | 博客
  • 博客访问: 987959
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-20 09:41:01

#include
using namespace std;

int main( void )
{
    cout << typeid( true == true ).name() << endl;
    cout << typeid( 1 == 1 ).name() << endl;
    cout << typeid( 1.0 == 1.0 ).name() << endl;

    cout << typeid( "" == "" ).name() << endl;
    cout << typeid( (char*)0 == (char*)0 ).name() << endl;
    cout << typeid( (const char*)0 == (const char*)0 ).name() << endl;

    return 0;
}

结果是:
long
long
int
bool
long
long

你猜到结果了吗?能解释一下VC++6.0是怎么想的吗?

BTW:正如  所说:不能拿vc++6.0和g++想比,那不是一个时代的产品,但
a. 本文目的并不是用于贬低VC++6.0,而只是觉得VC6行为很奇怪,找不到理由得奇怪。
b. 对于VC++,在7.1、7.2、8.0beta2变得成熟且经过市场检验之前,我只敢用VC++6.0。

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

网友评论2012-11-20 09:42:26

shanzy
VC的那个RTTI实现的要比C++实现的早,JJHOU的深浅书上捎带有这样类似的一句话

网友评论2012-11-20 09:42:12

roland
dev cpp 4.9.9.2
全是bool

网友评论2012-11-20 09:42:02

ahao
vc8,6个全是bool

网友评论2012-11-20 09:41:53

周星星
typeid 是C++的关键字,返回类型定义为const type_info&,name是type_info的成员函数。

举个事例给你看看你就明白了,对于如下代码:
#include <iostream>
using namespace std;

struct foo
{
    // virtual ~foo() {};
};
struct bar : foo
{
};
int main( void )
{
    foo a;
    bar b;
    foo& c = b;

    cout << typeid(a)

网友评论2012-11-20 09:41:39

我容易么我
的确很奇怪哦。。。不知道什么原因。。。。

对了问一下 .name() 是C++里面自带的函数吗。。。是实现什么功能的。