C++継承、虚関数、およびマルチステートのインスタンスコード

804 ワード

#include <iostream>
#include <string>

using namespace std;

namespace Animals {
	class Dog {
	  private:
		string name;
		
	  public:
		Dog(string name) : name(name) {
		}
		
		Dog() : name(NULL) {
		}
		
		virtual void bark() {
		  cout << "Baseclass: Hi, " << name << endl;
		}
		
		string getName() {
		  return name;
		}
		
		void setV(string aname) {
		  name = aname;
		}
	};

	class SDog : public Dog {
	  public:
		SDog(string name) : Dog(name){}
		
		virtual void bark() {
			Dog::bark();
			cout << "Derived Class: Hi, " << Dog::getName() << endl;
		}
	};
}

int main() {
  using namespace Animals;
  
  Dog a("martin");
  SDog b("merry");
  a.bark();
  b.bark();
  return 0;
}