首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

真的不能向std空间中增添任何东西么

2012-09-29 
真的不能向std空间中添加任何东西么?effective c++中写道:一般而言,重载function template没有问题,但std

真的不能向std空间中添加任何东西么?
effective c++中写道:
一般而言,重载function template没有问题,但std是个特殊的命名空间,管理也就比较特殊。客户可以全特化std内的templates,但不可以添加新的templates(或class或function或任何其他东西)到std里头。其实跨越红线的程序几乎仍可编译执行,但他们行为没有明确定义。所以不要添加任何新东西到std里头。

首先,我试了一下书上的例子,貌似添加是可以的。其次,我自己写了一个:
namespace std
{
int MY_VAULE = 10;
void fun()
{
cout<<"fun in std"<<endl;
}
}


然后
int main()
{
cout<<std::MY_VAULE<<endl;
std::fun();
return 0;
}
发现也没啥问题啊。
书中的警告是什么原因呢?

[解决办法]
当然是“可以”,但是是“不要”
如果你不能区别2个词汇,那就没办法了。
[解决办法]
语言角度当然没问题,std空间的东西不也是标准库开发者一点一点加进去的么

这里说的是应用角度,防止你自己的行为污染标准库,在C中不要随便用strlen等做自定义的函数名是一个道理

热点排行