private、protected、public 是 C++ 中的访问修饰符,用于控制类中成员变量和成员函数的访问权限。
-
private
private 表示私有的,只能在当前类的成员函数中访问,其他类和对象都不能访问。私有成员变量一般用于类的内部实现,不希望外部直接访问和修改。
-
protected
protected 表示受保护的,只能在当前类和其子类的成员函数中访问,其他类和对象都不能访问。受保护成员变量一般用于类的继承和实现,子类可以访问和修改父类的受保护成员变量。
-
public
public 表示公有的,所有类和对象都能访问。公有成员变量和公有成员函数一般用于类的接口和外部调用,提供给外部使用。
总结:
private:只能在本类内部访问,其他任何地方都不能访问。
protected:可以在本类内部和子类中访问,其他任何地方都不能访问。
public:可以在任何地方访问。
///
例如protected
class Animal {
protected:
int age; // 受保护的成员变量
public:
virtual void eat() {} // 公有的虚函数
};
class Dog : public Animal {
public:
void setAge(int a) { age = a; } // 子类可以访问和修改父类的受保护成员变量
};
int main() {
Animal animal;
animal.age = 1; // 错误,不能在类外部直接访问受保护的成员变量
Dog dog;
dog.setAge(2); // 正确,可以在子类中访问和修改父类的受保护成员变量
return 0;
}
假设我们在头文件的protected定义变量,那么在cpp文件中 可以调用吗
可以调用 ,必须是在头文件声明的成员函数中调用,也就是说在cpp里进行成员函数的编写
// Myclass.h 头文件
#ifndef MYCLASS_H
#define MYCLASS_H
class Myclass {
private:
int x; // 私有变量
public:
void setX(int a); // 公有函数
int getX(); // 公有函数
};
#endif
// Myclass.cpp 实现文件
#include "Myclass.h"
void Myclass::setX(int a) {
x = a;
}
int Myclass::getX() {
return x;
}