📜  示例中C++中Private和Protected之间的区别(1)

📅  最后修改于: 2023-12-03 15:11:24.523000             🧑  作者: Mango

C++中的Private和Protected

在C++中,类的成员可以被声明为private、protected或public。这些访问指定符用于限制类的成员在类内部和类外部的访问权限。

Private

私有成员只能在类内部访问,外部无法访问。私有成员通常用于实现类的实现细节和数据隐藏。

示例代码:

class MyClass {
private: 
    int myPrivateVar;

public: 
    void setPrivateVar(int var) {
        myPrivateVar = var;
    }

    int getPrivateVar() {
        return myPrivateVar;
    }
};

int main() {
    MyClass obj;
    obj.setPrivateVar(42);
    // obj.myPrivateVar = 42; // error: private member cannot be accessed
    std::cout << obj.getPrivateVar() << std::endl; // output: 42
    return 0;
}
Protected

受保护成员只能在类内部和派生类中访问,外部无法访问。protected成员通常用于在继承中共享数据。

示例代码:

class MyBaseClass {
protected:
    int myProtectedVar;
};

class MyDerivedClass : public MyBaseClass {
public:
    void setProtectedVar(int var) {
        myProtectedVar = var;
    }

    int getProtectedVar() {
        return myProtectedVar;
    }
};

int main() {
    MyDerivedClass obj;
    obj.setProtectedVar(42);
    // obj.myProtectedVar = 42; // error: protected member cannot be accessed outside a derived class
    std::cout << obj.getProtectedVar() << std::endl; // output: 42
    return 0;
}
总结
  • private成员只能在类内部访问,派生类和外部均无法访问。
  • protected成员可以在类内部和派生类中访问,外部无法访问。
  • public成员可以在任何地方都可以访问。

使用这些访问指定符的目的是将类的实现隐藏起来,只暴露必要的接口。这有助于保护数据的完整性和增强代码的可维护性。