📜  C++中的访问修饰符(1)

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

C++中的访问修饰符

在C++中,访问修饰符用来控制类中成员的访问权限。C++支持三种访问修饰符:public、private 和 protected。

public访问修饰符

public访问修饰符声明的成员可以被类的对象、类的成员函数和友元函数访问。下面是一个例子:

class MyClass {
public:
    int public_num;
private:
    int private_num;
protected:
    int protected_num;
};

int main() {
    MyClass myObj;
    myObj.public_num = 10;    // 合法
    myObj.private_num = 10;   // 非法
    myObj.protected_num = 10; // 非法
}

在上面的例子中,public_num是一个公有的成员变量,可以被类的对象、类的成员函数和友元函数访问。private_num是私有的成员变量,只能在类的成员函数和友元函数中访问。protected_num是受保护的成员变量,只能在类的成员函数和其子类的成员函数中访问。

private访问修饰符

private访问修饰符声明的成员只能在类的成员函数和友元函数中访问。下面是一个例子:

class MyClass {
public:
    void set_private_num(int num) {
        private_num = num;   // 合法
    }
private:
    int private_num;
};

int main() {
    MyClass myObj;
    myObj.private_num = 10;   // 非法
}
protected访问修饰符

protected访问修饰符声明的成员只能在类的成员函数和子类的成员函数中访问。下面是一个例子:

class Parent {
protected:
    int protected_num;
};

class Child : public Parent {
public:
    void set_protected_num(int num) {
        protected_num = num;   // 合法
    }
};

int main() {
    Child myObj;
    myObj.protected_num = 10;   // 非法
}

在上面的例子中,Parent类中的protected_num只能在Parent类的成员函数和其子类的成员函数中访问。Child类继承了Parent类,因此可以在Child类的成员函数中访问protected_num。

总结

访问修饰符在C++中用于控制成员的访问权限。public访问修饰符声明的成员可以被类的对象、类的成员函数和友元函数访问;private访问修饰符声明的成员只能在类的成员函数和友元函数中访问;protected访问修饰符声明的成员只能在类的成员函数和其子类的成员函数中访问。