命名空间,当我想出现两个相同的person的时候,我们可以用名字空间。这样可以避免多个相同对象互相争夺空间用的时候写名字空间就可以了,全局直接两个冒号就可以了。这样就避免了二义性。也就是说我们可以通过访问限定符显示指出他的路径。
usingnamespacestd; namespacemyspace{ classPerson { public: intget_age(void) { returnm_age; } voidset_age(intage) { m_age=age+2; } private: intm_age{0}; }; } classPerson{ public: intget_age(void) { returnm_age; } voidset_age(intage) { m_age=age+2; } private: intm_age{0}; }; intmain() { Personperson1; // 默认是全局的person1 ::Personperson2; // 显示指出person2是全局空间下的myspace::Personperson3; // 显示指出person3是myspace空间下的return0; }
如果我不想用::我也可以using namespace myspace。相当于它既去全局找,也去我这个空间找,但是如果出现两个person,一个在全局,一个在myspace下这样就不适用了,因为这样就有二义性了。