C++中私有和受保护的区别
在这篇文章中,我们将了解C++中私有访问修饰符和受保护访问修饰符之间的区别。
私有访问修饰符
它们使用“private”关键字声明,后跟“:”。
它们不能在类外访问。
'private'关键字是一个访问修饰符,它确保类中的函数和属性只能由已声明它们的类成员访问。
仅允许成员函数或友元函数访问标记为“私有”的数据。
示例
#include输出结果using namespace std; class base_class{ private: string my_name; int my_age; public: void getName(){ cout << "输入名称... "; cin >> my_name; cout << "输入年龄... "; cin >> my_age; } void printIt(){ cout << "名字是: " << my_name << endl; cout << "年龄是: " << my_age << endl; } }; int main(){ cout<<"An object of class is created"<< endl; base_class my_instance; my_instance.getName(); my_instance.printIt(); return 0; }
/tmp/u5NtWSnX5A.o An object of class is created 输入名称... Jane 输入年龄... 34 名字是: Jane 年龄是: 34
受保护的访问修饰符
受保护的访问修饰符类似于私有访问修饰符。
它们使用“protected”关键字声明,后跟“:”。
不能在类外访问声明为“受保护”的类成员。
可以在声明它们的类中访问它们。
它们也可以被其父类包含“受保护”成员的派生类访问。
它们在处理继承概念时使用。
示例
#includeusing namespace std; class base_class{ private: string my_name; int my_age; protected: int my_salary; public: void getName(){ cout << "输入名称... "; cin >> my_name; cout << "输入年龄... "; cin >> my_age; } void printIt(){ cout << "名字是: " << my_name << endl; cout << "年龄是: " << my_age << endl; } }; class derived_class : public base_class{ private: string my_city; public: void set_salary(int val){ my_salary = val; } void get_data_1(){ getName(); cout << "进入城市... "; cin >> my_city; } void print_it_1(){ cout << "工资是: " << my_salary << endl; printIt(); cout << "城市是: " << my_city << endl; } }; int main(){ cout<<"正在创建派生类的实例.."< 输出结果 /tmp/u5NtWSnX5A.o 正在创建派生类的实例.. 输入名称... Jane 输入年龄... 23 进入城市... NewYork 工资是: 100 名字是: Jane 年龄是: 23 城市是: NewYork