#####这二个东西,经常被我们忽略了,其实很实用。当你深入c++世界的时候,总有一天会遇到他们,先面熟一下吧。
###1.0 名称空间。
###知识点综述:
名称空间:将一个程序中所有名字规范到不同的集合-名字空间中 明确每个名字中没有任何二个相同的名字定义。 格式:namespace name{ code; }//没有分号 原则: 1.0 使用在已经命名的名称空间中声明的变量,不使用外部全局变量。 2.0 对于using声明,首先将其作用域设置为局部而不是全局。 3.0 不要在头文件中使用using声明,这样使得可用名称空间变的 模糊,容易出现二义性。 4.0 导入名字空间,首先使用名字域解释和using声明, 尽量不用using命令。 其它知识点: 5.0 我们经常为了方便,使用 using namespace std;//就是std名字空间。 6.0 ::域解释符,表明使用名字来自哪个空间, 比如 std::cout<
###相关代码:
#include#include using namespace std;namespace cat_name { string namespace_name; void print() { cout << "hello world" << endl; } //名称空间嵌套 namespace c1 { void display() { cout << namespace_name << endl; } } class Cat { private: string name; public: Cat(string name){ this->name = name; } void speak(); };}namespace cat_name { void Cat::speak() { cout << "my name is " << name << endl; }}namespace dog_name { string namespace_name; void print() { //作用域访问cat_name()中的print函数 cout << "我要调用另一个名称空间的函数" << endl; cat_name::print(); } class Dog { private: string name; public: Dog(string name) { this->name = name; } void speak() { cout << "my name is " << name << endl; } };}int main(){ string namespace_name; /* 局部using使用 using cat_name::namespace_name; namespace_name = "cat_name"; */ cat_name::namespace_name = "cat_name"; dog_name::namespace_name = "dog_name"; cat_name::Cat cat("黑猫警长"); dog_name::Dog dog("旺财"); //如果不加名称空间,会显示未定义错误 cat.speak(); dog.speak(); //双重域限定才行。 cat_name::c1::display(); system("pause"); return 0;}复制代码
###结果:
my name is 黑猫警长my name is 旺财cat_name复制代码
###2.0 条件编译。
###知识点综述:
条件编译:采用条件编译指令,可以指定某些代码 在满足一定条件时参与编译或不参与编译.复制代码
###图解知识点:
###代码:
#include#include using namespace std;#define Mvoid display(){#if defined(M) cout << "M存在" << endl;#else cout << "M不存在" << endl;#endif}int main(){ display(); system("pause"); return 0;}复制代码
###结果:
M存在复制代码
###今天跑步了,今天买了一把雨伞。今天下起了小雨。
啊啊啊。雨伞掉了,这至少是第二把了,现在掉了二件外套,二个..........复制代码