[Buổi 29][Đa hình][Lab] Bài 1: Virtual Speak


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Virtual Speak

Bối cảnh

Cùng một lời gọi speak() nhưng hành vi phụ thuộc object thực tế.

Bài tập minh họa dynamic dispatch qua base pointer.

Yêu cầu

  1. Base Animal có virtual speak().
  2. Dog override trả WOOF, Cat override trả MEOW.
  3. Đọc type D/C và gọi speak qua Animal*.

Yêu cầu tổ chức code

Phải gọi qua base pointer/reference và dùng virtual + override.

Online Judge chấm output. Với bài nhạy về cấu trúc OOP, giảng viên review thêm source code để xác nhận học viên luyện đúng kỹ năng.

Input

Một ký tự D hoặc C.

Output

Một từ.

Ràng buộc

Chỉ D hoặc C.

Ví dụ 1

Input

D

Output

WOOF

Giải thích

Biến/con trỏ base được dùng để gọi speak() trên object Dog. Vì method là virtual, dynamic dispatch chọn implementation của Dog thay vì Base, nên output WOOF. Đây chính là khác biệt cốt lõi giữa gọi method thường và polymorphic call.

Ví dụ 2

Input

C

Output

MEOW

Giải thích

Khi runtime object là Cat, cùng lời gọi qua interface base lại chọn Cat::speak() và in MEOW. Hai ví dụ D/C cùng một call-site nhưng khác output chứng minh behavior phụ thuộc dynamic type.

Thông tin học tập

  • Module: M08
  • Buổi: B29
  • Loại bài: LAB
  • Độ khó: Easy
  • Concepts: virtual functions, override, base pointer, dynamic dispatch
  • Giới hạn kiến thức: B01-B29
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo