命名空间的内联与嵌套
命名空间的内联与嵌套
namespace Company {namespace V1 {void function() { cout << "1.0版本:去台湾岛钓鱼..." << endl; }}inline namespace V2 {void function() { cout << "2.0版本:去台湾岛钓鱼,参加婚礼..." << endl; }}
}
内联命名空间 可以将Son_2中的所以数据和函数暴露在Father空间中
Father::Son_2::function();不需要逐层访问Son_2中的数据和函数
版本兼容时运用
参考程序如下:
#include <iostream>using namespace std;namespace Company {namespace V1 {void function() { cout << "1.0版本:去台湾岛钓鱼..." << endl; }}//内联命名空间 可以将Son_2中的所以数据和函数暴露在Father空间中//Father::Son_2::function();不需要逐层访问Son_2中的数据和函数 //版本兼容时运用较多inline namespace V2 {void function() { cout << "2.0版本:去台湾岛钓鱼,参加婚礼..." << endl; }}
}
/*
//namespace China {
// namespace Hunan{
// namespace ChangSha {
// void hello() { cout << "你好长沙" << endl; }
// }
// }
//}
//以上嵌套在C++17中可以如下写法:
namespace China::Hunan::ChangSha {void hello(){ cout << "你好长沙" << endl; }
}
namespace China::Hunan{void hello() { cout << "你好长沙" << endl; }
}
*/int main()
{Company::function(); //客户端不做任何改变就使用2.0版本//也可以继续使用老版本Company::V1::function();return 0;
}