Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Inherit
#include <iostream> #include <string> class Human { std::string m_name; protected: int m_age; public: Human(std::string name = "", int age = 0) : m_name(name), m_age(age) { std::cout << "Human constructor()"<<std::endl; } std::string getName() const { return m_name; } int getAge() const { return m_age; } void print(){ std::cout<<"Name: "<<m_name<<"\nAge: "<<m_age<<std::endl; } ~Human(){ std::cout << "Human destructor()"<<std::endl; } }; class Student0: public Human { public: std::string m_group; Student0(std::string group = "") : m_group(group) { std::cout << "Student constructor()"<<std::endl; } std::string getGroup() const { return m_group; } ~Student0(){ std::cout << "Student destructor()"<<std::endl; } }; class Student: public Human { public: std::string m_group; Student(std::string name = "", int age = 0, std::string group = "") : m_group(group), Human(name,age) { std::cout << "Student constructor()"<<std::endl; } std::string getGroup() const { return m_group; } // При переопределении метода можем изменить спецификатор доступа void print(){ Human::print(); std::cout<<"Group: "<<m_group<<std::endl; } ~Student(){ std::cout << "Student destructor()"<<std::endl; } }; class SuperHero: protected Human { public: std::string m_power; SuperHero(std::string power = "") : m_power(power) { std::cout << "SuperHero constructor()"<<std::endl; } std::string getPower() const { return m_power; } ~SuperHero(){ std::cout << "SuperHero destructor()"<<std::endl; } void print(){ std::cout<<"Power: "<<m_power<<std::endl; } private: using Human::m_age; // делаем это свойство скрытым даже для наследования int getAge() = delete; // делаем этот метод недоступным std::string getName() = delete; //делаем этот метод недоступным }; class Ninja: private Human { int m_killed; public: Ninja(int killed = 0) : m_killed(killed) { std::cout << "Ninja constructor()"<<std::endl; } int getKilled() const { return m_killed; } void kill(){m_killed++;} void print(){ std::cout<<"===Ninja=="<<std::endl; std::cout<<"Killed: "<<m_killed<<std::endl; std::cout<<"===/Ninja=="<<std::endl; } ~Ninja(){ std::cout << "Ninja destructor()"<<std::endl; } }; int main() { Student st("Потап",20,"КТСО-01-18"); st.print(); // SuperHero sh("fast"); // Ninja nj; // std::cout<<st.getAge()<<std::endl; // st.print(); // st.Human::print(); // //sh.getAge(); //ошибка - у супергероя нельзя узнать имя и возраст // nj.print(); // // nj.getAge(); //ошибка - у ниндзя нельзя узнать имя и возраст // nj.kill(); // nj.print(); }
run
|
edit
|
history
|
help
0
ForwardListString
.
ThreadContext
Dar
search_n algorithm
star print 2
Couting number of substring occurances in C++
Ultimo intento
member initial list
Why C++ optimizer has problems with these temporary variables