c++中protected:与public:有什么区别
时间: 2023-12-30 19:06:05 浏览: 26
在C++中,protected和public都是访问控制修饰符,用于控制类成员的访问权限。
public表示成员可以被任何函数访问,包括类的成员函数、友元函数和类外部的函数。
protected表示成员可以被类的成员函数和友元函数访问,但不能被类外部的函数访问。
因此,区别在于对于protected修饰的成员只有在类的内部和其派生类中才能访问,而public修饰的成员则可以被类的外部访问。
一般来说,如果一个成员变量或函数需要在类的派生类中使用,就应该使用protected修饰符,否则应该使用public修饰符。
相关问题
c++类中public和private,protected有什么区别
在C++中,public、private和protected是类成员访问修饰符,它们的作用是控制类成员的访问权限。
public成员可以被类的任何成员函数、友元函数、派生类和外部代码访问,而private成员只能被类的成员函数和友元函数访问,无法被派生类和外部代码访问。protected成员和private成员类似,但可以被派生类访问。
因此,public成员表示对外可见,可以被外部调用;private成员表示对外不可见,只能被类内部的函数访问;protected成员表示对外不可见,但可以被派生类访问。
举个例子,假设我们有一个名为Person的类,该类有两个private成员变量name和age,以及一个public成员函数printInfo,代码如下:
```
class Person {
private:
string name;
int age;
public:
void printInfo() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
```
在这个例子中,name和age是private成员变量,只能在类内部访问。而printInfo是public成员函数,可以被外部代码调用来输出name和age的值。
总之,public、private和protected关键字在C++中用于控制类成员的访问权限,可以保证程序的安全性和封装性。
C++中 protected
在C++中,`protected`是一种访问控制修饰符,用于类的成员函数和变量的访问控制。
被`protected`修饰的成员变量和函数可以被该类的派生类访问。而对于该类对象的外部,这些成员变量和函数是不可见的。
以下是一个使用`protected`的示例:
```c++
class Animal {
protected:
int age;
public:
Animal(int a) : age(a) {}
};
class Dog : public Animal {
public:
void printAge() {
cout << "The dog's age is " << age << endl;
}
};
int main() {
Dog d(5);
d.printAge(); // 输出:The dog's age is 5
//d.age = 6; // 编译错误:'int Animal::age' is protected within this context
return 0;
}
```
在上面的示例中,`Animal`类的`age`成员变量被`protected`修饰,因此`Dog`类可以访问该变量并在`printAge()`函数中输出。但是,尝试在`main()`函数中直接修改`d.age`会导致编译错误,因为`age`只能在该类及其派生类中访问,而不能从类的外部访问。