# Animal method override exp 2 ```cpp= #include <stdio.h> class Animal { public: // !!!! 若要展現多型,則 super class 的該個函式必須加上 virtual 前綴關鍵字 virtual void bark() { printf("???\n"); } }; class Cat : public Animal { public: void bark() { printf("Meow\n"); } }; class Dog : public Animal { public: void bark() { printf("Wan!\n"); } }; int main() { Animal* a; Cat* c = new Cat(); Dog* d = new Dog(); // a 的型態是 Animal 指標,可以吃下一個 Cat 物件 a = c; // 雖然 a 的型態是 Animal,但內容物是一個 Cat 物件,此時會去執行 Cat 的 bark() // 因此印出「Meow」 a->bark(); // a 的型態是 Animal 指標,可以吃下一個 Dog 物件 a = d; // 雖然 a 的型態是 Animal,但內容物是一個 Dog 物件,此時會去執行 Dog 的 bark() // 因此印出「Wan!」 a->bark(); delete c; delete d; return 0; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up