public:
外部可以直接访问.
可以通过对象来访问这个成员
private
外部不可以访问
自己的成员函数内, 可以访问
protected
protected和private非常相似
和private的唯一区别:
protecte: 子类的成员函数中可以直接访问
private: 子类的成员函数中不可以访问
Father.h
#pragma once
#include <string>
#include <sstream>
using namespace std;
class Father
{
public:
Father(const string& name, int age) {
this->name = name;
this->age = age;
}
string getName()const {
return name;
}
int getAge()const {
return age;
}
string des()const {
stringstream ret;
ret << "name:" << name << "age:" << age;
return ret.str();
}
//为了让子类可以直接访问成员函数
protected:
string name;
int age;
//子类的成员函数不可以访问
//但可以通过public的成员函数来访问
/*private:
string name;
int age;
*/
};
Son.h
#pragma once
#include "Father.h"
class Son :public Father
{
public:
Son(const string& name, int age, string game):Father(name,age){
this->game = game;
}
string getGame()const {
return game;
}
string des()const {
stringstream ret;
//因为name与age是protected子类可以直接父类访问成员函数
ret << "name:" << name << "age:" << age << "game:" << game;
return ret.str();
}
/*string des()const {
stringstream ret;
//成员函数:name age 是private子类的成员函数不可以访问
//可用getName()与getAge()来访问父类的成员函数
ret << "name:" <<getName()<< "age:" << getAge() << "game:" << game;
return ret.str();
}*/
private:
string game;
};
mian.cpp
#include <iostream>
#include "Father.h"
#include "Son.h"
int main(void) {
Father man1("老王", 56);
Son man2("小王", 28, "LOL");
cout << man1.des() << endl;
cout << man2.des() << endl;
return 0;
}
运行结果