私人运营商可以从外面访问吗?

fla*_*nik 4 c++ private class

即如果我在私人部分的类中定义运算符==和+,它们是否可以从主要访问?

它适用于MSVS 2008和2010,但对我来说,它似乎是编译器中的一个错误.是这样吗?

Alo*_*ave 5

在私有访问说明符下声明的函数或成员将无法在类成员函数外部访问.

C++中的类/结构/联合有3个访问说明符.这些访问说明符定义了如何访问类的成员.当然,类的任何成员都可以在该类中访问(在同一个类的任何成员函数内).继续前进到访问说明符的类型,它们是:

Public - 声明为Public的成员可以通过类的对象从Class外部访问.
受保护 - 声明为受保护的成员只能从类BUT外部访问,只能在派生自它的类中访问.
私人 - 这些成员只能在班级内访问.不允许外部访问.

朋友来救援!在另一个类中
声明一个函数作为朋友允许该函数访问类中的所有成员函数,而不管访问说明符规则如何.朋友这是一种绕过C++中规定的访问说明符规则的方法.类似地,在另一个类中声明为朋友的类将允许被声明为朋友的类可以访问该类的所有成员.请注意,可以在任何访问指定符下给出friend声明,它将具有相同的效果.

源代码示例:

    class MyClass
    {
        public:
            int a;
        protected:
            int b;
        private:
            int c;
            friend void doSomething(MyClass obj);
    };

    void doSomething(MyClass obj)
    {
        obj.a = 10;     //Allowed
        obj.b = 20;     //Allowed, 
        obj.c = 30;     //Allowed, 
    }


    int main()
    {
        MyClass obj;
        obj.a = 10;     //Allowed
        obj.b = 20;     //Not Allowed, gives compiler error
        obj.c = 30;     //Not Allowed, gives compiler error
    }
Run Code Online (Sandbox Code Playgroud)

因此,如果您正在使用,friend那么您可以访问该类的私有成员,否则您的编译器会出错,您应该考虑更改它!