【C++】嵌套命名空间和内联命名空间(c++11)

嵌套命名空间

【用法】

namespace test1::test2::test3 {
	int TestMethod() {
		return 0;
	}
}

等价于:

namespace test1 {
	namespace test2 {
		namespace test3 {
			int TestMethod() {
				return 0;
			}
		}
	}
}

【作用】
代码更简洁美观

内联命名空间

【用法】
namespace关键字前加inline关键字:

namespace test {
	inline namespace V1 {
		int TestMethod() {
			return 1;
		}
	}
}

调用时可以直接通过以下方式调用,省略子namespace的名字:

test::TestMethod();

【特性】
内联命名空间中的名字可以被外层命名空间直接使用,无需前缀。
【使用场景】
当namespace中加入新特性时,无需使用者修改代码。如:当V1升级为V2时,使用inline修饰V2的命名空间,使用者无需再修改代码。
原来定义的namespace:

namespace test {
	namespace V1 {
		int TestMethod() {
			return 1;
		}
	}
}

新版本的namespace:

namespace test {
	inline namespace V1 {
		int TestMethod() {
			return 1;
		}
	}

	namespace V2 {
		int TestMethod() {
			return 1;
		}
	}
}

前后两个版本使用者都可以通过test::TestMethod()调用V1中的TestMethod方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值