具有相同名称的C++变量,context:global和private,

dha*_*0us 3 c++ global private

在下面的代码中,g ++给出了这个错误:1.cpp:在成员函数中,void W::test()': 1.cpp:6: error:int F :: glob'是private 1.cpp:19:error:在这个上下文中

但是,不应该在这里使用全局声明的变量'glob',而不是"私有""glob"吗?

   #include <iostream.h>

    int glob;
    class F
    {
        int glob;
        public:
        void readIt()
        {
            cin >> glob;
        }
    };

    class W : public F
    {
        public:
            void test()
            {
                glob--;
            }
    };

    int main()
    {
    }
Run Code Online (Sandbox Code Playgroud)

str*_*ger 10

使用范围规则访问变量和函数,而不是可见性规则.因为F::globglob在范围内W::test(),所以使用它.但是,W::test()没有访问权限F::glob,并且会出现错误结果.编译器并没有检查::glob,因为别的preceeds它范围内"优先级"(不知道的确切期限).


yes*_*aaj 5

private glob会影响全局glob,所以错误是正确的使用:: glob来访问全局变量,如果你打算使用全局变量