您的位置:首页 > 编程语言 > C语言/C++

C++的类型名居然可以当变量

2009-12-06 22:55 176 查看
今天在CSDN上面看到一篇文章,里面的内容刺激了一下。原来C++的类型名也可以用为变量来用,而且通过操作符的重载,整处语句可以产生不可思议的结果。

#include< iostream >
#include< vector >
using namespace std;
typedef int UNIT4;

class Hack{

};

Hack& operator<(Hack &a,Hack &b)
{
std::cerr<<"小于操作符"<<endl;
return a;
}

Hack &operator>(Hack &a,Hack &b)
{
std::cerr<<"大于操作符"<<endl;
return a;
}

int main(int argc,char ** argv)
{
Hack vector;
Hack UNIT4;
Hack foo;
vector<UNIT4> foo;

return 0;
}

其实我第一次看到这个程序,很自然的想到这是定义一个int类型的容器的,谁知道这才是陷阱。

想的跟编译后的结果根本是风牛马不相及呀。

结果:

小于操作符

大于操作符

这是一个学习语言要注意的地方,为了避免以后给这样的陷阱陷害,这里写下提醒自己注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: