#include<iostream> #include<typeinfo> class Graph { public: virtual void draw(){std::cout<<"Graph::draw():just as an interface\n";} }; class Rectangle:public Graph { public: void draw(){std::cout<<"Rectangle::draw():programs of draw a rectangle\n";} }; class Circle:public Graph { public: void draw(){std::cout<<"Circle::draw():programs of draw a circle\n";} }; void fun(Graph *ptr) { std::cout<<"pointer tyoe:"<<typeid(ptr).name()<<"\n"; std::cout<<"RTTI type:"<<typeid(*ptr).name()<<"\n"; ptr->draw(); } int main() { Graph g1; Rectangle r1; Circle c1; g1.draw(); r1.draw(); c1.draw(); std::cout<<"\n"; r1.Graph::draw(); c1.Graph::draw(); std::cout<<"\n"; fun(&g1); fun(&r1); fun(&c1); }
#include<iostream> #include<string> using namespace std; class car { public: car(){} car(string maker,string model,int year):maker(maker),model(model),year(year),odometers(0){} void info(); void update_odometers(int n); private: string maker; int year; string model; int odometers; }; void car::info() { cout<<"maker:\t\t"<<maker<<endl; cout<<"model:\t\t"<<model<<endl; cout<<"year:\t\t"<<year<<endl; cout<<"odometers:\t"<<odometers<<endl; } void car::update_odometers(int n) { if(n<odometers) { cout<<"error"<<endl; } else { odometers=n; } }
#include<iostream> class battery { public: battery() { capacity=70; } int get_capacity(); private: int capacity; }; int battery::get_capacity() { return capacity; }
#include<iostream> #include<string> #include"battery.hpp" #include"car.hpp" class electriccar:public car { public: electriccar(){} electriccar(string maker,string model,int year):maker(maker),model(model),year(year),odometers(0),battery(){} void info() { cout<<"maker:\t\t"<<maker<<endl; cout<<"model:\t\t"<<model<<endl; cout<<"year:\t\t"<<year<<endl; cout<<"odometers:\t"<<odometers<<endl; cout<<"capacity:\t"<<battery.get_capacity()<<"-kWh"<<endl; } void update_odometers(int n) { if(n<odometers) cout<<"error"<<endl; else odometers=n; } private: battery battery; string maker; int year; string model; int odometers; };#include<iostream> #include<string> #include"battery.hpp" #include"car.hpp" class electriccar:public car { public: electriccar(){} electriccar(string maker,string model,int year):maker(maker),model(model),year(year),odometers(0),battery(){} void info() { cout<<"maker:\t\t"<<maker<<endl; cout<<"model:\t\t"<<model<<endl; cout<<"year:\t\t"<<year<<endl; cout<<"odometers:\t"<<odometers<<endl; cout<<"capacity:\t"<<battery.get_capacity()<<"-kWh"<<endl; } void update_odometers(int n) { if(n<odometers) cout<<"error"<<endl; else odometers=n; } private: battery battery; string maker; int year; string model; int odometers; };
#include<iostream> #include"electriccar.hpp" int main() { using namespace std; car oldcar("Audi","a4",2016); cout<<"---------oldcar's info--------"<<endl; oldcar.update_odometers(25000); oldcar.info(); cout<<endl; electriccar newcar("Tesla","model s",2016); newcar.update_odometers(2500); cout<<"\n--------newcar's info--------\n"; newcar.info(); }
#include<iostream> #include<string> using namespace std; class machinepets { public: machinepets(){} machinepets(const string s):nickname(s){} virtual string talk() { string t; t="hi~"; return t; } string get_nickname(); private: string nickname; }; string machinepets::get_nickname() { return nickname; } class petcats:public machinepets { public: petcats(); petcats(const string s):machinepets(s){} string talk() { string t; t="miao wu~"; return t; } }; class petdogs:public machinepets { public: petdogs(); petdogs(const string s):machinepets(s){} string talk() { string t; t="wang wang~"; return t; } };
#include<iostream> #include"pets.hpp" using namespace std; void play(machinepets *ptr) { cout<<ptr->get_nickname()<<" says "<<ptr->talk()<<endl; } int main() { petcats cat("miku"); petdogs dog("da huang"); play(&cat); play(&dog); }