C++ 命名空间

    C++和C#都支持命名空间,也就是namespace,并且都支持嵌套,如:namespace Root { namespace Leaf { enum Type { TYPE_NORMAL, TYPE_HIGH, }; } }

    虽然声明一致,但使用上却大相径庭。
    对于C++来说,命名空间的必须使用“::”来进行标注,如: Root::Leaf::Type type = Root::Leaf::TYPE_NORMAL;
    但C#却是采用“.”:Root.Leaf.Type type = Root.Leaf.Type.TYPE_NORMAL;
    如果以操作的观点来看,本例中的Type在C++中更像是类的类型,而C#则是对象的类型。

    还有!C#不能直接在命名空间中直接声明变量或函数,如:
    namespace Root { namespace Leaf { int iVal = 0; void Run(){}; } }