1、使用std命名空间中的东西,需要#include
2、关于命名空间
using namespace std;
/*暴露std的全部名称
保证在本句之后的区域中可以直接使用叫做std的名字空间的全部成员
原本需要输入std::xxx的,可以直接输入xxx来使用*/
/*std指C++标准程序库
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中(standard)
*/
//为防止命名污染,更常用的是以下形式:
using std::cout;
using std::endl;
头文件中不要用using声明,会弄得到处都是的。
常见的:类的定义在引用标准库内容时完整地使用std::限定符。
❤看到.h的第一反应是到处都是
为什么不要把全局变量/函数定义写在.h里?
把定义写在.h里,.h被多处包含的话,就会引发重复定义。 可爱的连接错误error LNK2005就出现了。
尽管一个全局变量或函数可以(在多个编译单元中) 有多处“声明”, 但是“定义” 却只能允许出现一次。定义是分配空间并赋初值(如果有) 的声明。最好的安排是在某个相关的.c 文件中定义, 然后在头文件(.h) 中进行外部声明, 在需要使用的时候, 只要包含对应的头文件即可。定义变量的.c 文件也应该包含该头文件, 以便编译器检查定义和声明的一致性。
把全局变量定义写在.h里。然后,在全局变量前加 __declspec(selectany) 。 就是有重复定义 但是随便选一个的意思。。不会再报告重复定义的连接错误了。。。据说整模板的人 会这么用 比较方便 呵呵 用的不多。。有待考证。
同样的,using [namespace] XXX 也不用在.h里,会“到处都是”的,引起名字空间污染不在话下。
3、using还有其他用处
class Base {
public:
std::size_t size() const { return n; }
protected:
std::size_t n;
};
class Derived : private Base { //private继承
public:
// maintain access levels for members related to the size of the object
using Base::size; //可以使用 using 声明访问基类中的名字 恢复到基类中的访问级别
protected:
using Base::n;
// ...
}; -C++ Primer ver.4-
原文链接: https://www.cnblogs.com/boldness/archive/2013/01/22/2871210.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/76391
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!