Polymorphism In C++ - Viblo
Có thể bạn quan tâm
Định nghĩa:
Từ đa hình có nghĩa là có nhiều dạng. Nói một cách đơn giản thì có thể định nghĩa đa hình là khả năng của một thông điệp được hiển thị dưới nhiều dạng. Ví dụ như một người cùng một lúc có thể có đặc tính khác nhau. Giống như một người đàn ông đồng thời là một người cha, một người chồng, một nhân viên. Vì vậy, cùng một người sở hữu hành vi khác nhau trong các tình huống khác nhau. Điều này được gọi là đa hình.
Đa hình trong c++
Trong đa hình C ++ được chia thành hai loại:
- Compile time Polymorphism
- Runtime Polymorphism
Compile time Polymorphism
Loại đa hình này đạt được bằng cách nạp chồng hàm hoặc quá tải toán tử.
Function overloading: Là hàm các hàm có cùng tên nhưng khác nhau về chức năng và tham số truyền vào. Các hàm được phân biệt thông qua các tham số truyền vào.
using namespace std; class Geeks { public: // function with 1 int parameter void func(int x) { cout << "value of x is " << x << endl; } // function with same name but 1 double parameter void func(double x) { cout << "value of x is " << x << endl; } // function with same name and 2 int parameters void func(int x, int y) { cout << "value of x and y is " << x << ", " << y << endl; } }; int main() { Geeks obj1; // Which function is called will depend on the parameters passed // The first 'func' is called obj1.func(7); // The second 'func' is called obj1.func(9.132); // The third 'func' is called obj1.func(85,64); return 0; } Output: value of x is 7 value of x is 9.132 value of x and y is 85, 64Trong ví dụ trên, một hàm duy nhất có tên func nhưng khi truyền các tham số khác nhau sẽ được kết quả khác nhau, đây là thuộc tính của đa hình.
Operator overloading: C ++ cũng cung cấp tùy chọn cho các toán tử. Các toán tử có thể được định nghĩa lại trong các đối tượng. Ví dụ: chúng ta có thể tạo toán tử "+" cho lớp chuỗi để nối hai chuỗi.
#include<iostream> using namespace std; class Complex { private: int real, imag; public: Complex(int r = 0, int i =0) {real = r; imag = i;} // This is automatically called when '+' is used with // between two Complex objects Complex operator + (Complex const &obj) { Complex res; res.real = real + obj.real; res.imag = imag + obj.imag; return res; } void print() { cout << real << " + i" << imag << endl; } }; int main() { Complex c1(10, 5), c2(2, 4); Complex c3 = c1 + c2; // An example call to "operator+" c3.print(); } Output: 12 + i9Trong ví dụ trên, toán tử ‘+, được định nghĩa lại để cộng 2 đối tượng.
Runtime polymorphism
Overload xảy ra khi một lớp dẫn xuất có định nghĩa laij cho một trong các hàm thành viên của lớp cơ sở. Chức năng này được gọi là ghi đè.
#include <bits/stdc++.h> using namespace std; class base { public: virtual void print () { cout<< "print base class" <<endl; } void show () { cout<< "show base class" <<endl; } }; class derived:public base { public: void print (){ cout<< "print derived class" <<endl; } void show (){ cout<< "show derived class" <<endl; } }; int main() { base *bptr; derived d; bptr = &d; bptr->print(); bptr->show(); return 0; } Output: print derived class show base classTừ khóa » đa Xạ Trong C++
-
Đa Hình Trong C++ | TopDev
-
Tính Đa Hình Trong Lập Trình Hướng Đối Tượng - CodeLearn
-
Tính Đa Hình Trong Lập Trình Hướng Đối Tượng
-
Tính đa Hình Trong C++ - Học Lập Trình C++ Online - VietTuts
-
Đa Hình Trong C++ - Techacademy
-
Lập Trình C++ - Đa Hình (Polymorphsim)
-
Kế Thừa & đa Hình Trong Lập Trình Hướng đối Tượng - CppDeveloper
-
2.8. Tính đa Hình - Lập Trình Tân Binh
-
Tính đa Hình Trong OOP Và Những Loại đa Hình Bạn Cần Biết
-
Đa Hình Trong Lập Trình Hướng đối Tượng | How Kteam
-
C++ Hỗ Trợ đa Kế Thừa Trong Lập Trình Hướng đối Tượng - Góc Học IT
-
Đa Hình Trong C++ - TEK4
-
Tính đa Hình Trong Lập Trình Hướng đối Tượng - .vn
-
Tính đa Hình, Phương Thức ảo, Lớp Trừu Tượng Trong C++
-
Chi Tiết Bài Học Đa Kế Thừa Và Kế Thừa Nhiều Tầng - Vimentor
-
Top 13 đa Hình Là Gì
-
Tính đa Hình (Polymorphism) Trong C# Là Gì? Khái Niệm ... - Thủ Thuật