std:: /前置声明/ #pragma once

来源:互联网 发布:手机淘宝卖东西怎么弄 编辑:程序博客网 时间:2024/06/05 04:50

总结

  如果我们对全局作用域内的东西不加 std:: 的话,在很复杂的类内可能用类外的报错
  在写模板的时候,即使包括了其他头文件,如果不写前置声明的话,也是会报错的,可能报错看不懂很玄幻。
  #pragma once / #ifndef _头文件名 #endif ,都是可以只让该头文件包含一次,这个很重要,可能在复杂的工程里,俩个头文件互相包含,结果导致重复展开,导致类的重定义,从而导致报错,如果是模板类,可能报错很玄幻,你看不懂。
  #pragma once 可以让声明的头文件只包含一次,而 #ifndef #define _xxx #endif 这个防止包含头文件的方法,这个有个坑,如果其他头文件定义了相同的#define 后的这个宏名字,导致该头文件不会展开,导致有坑。