01/10/2018, 00:46

Hỏi về OOP c++

Anh chị nào có thể giải đáp cho em sự khác biệt giữa phương thức ảo, và phương thức thuần ảo trong OPP C++ không ạ, em hoang mang quá, 2 cái này em thấy đều định nghĩa lại ở lớp con kế thừa,ý nghĩa nó là gì và khi nào xài nó ạ, em cảm ơn/

nth viết 03:00 ngày 01/10/2018

Theo kiến thức mình có nhé!
phương thức thuân ảo thì tất cả các hàm con được kế thừa từ nó phải định nghĩa lại. vì ở lớp cơ sở nó chỉ được khai báo
phương thức ảo thì khi ở lớp con(lớp kế thừa) k khai báo hoặc định nghĩa lại vẫn dùng được
Vậy thì khi nào dùng phương thức ảo , thuẩn ảo
ví dụ có 1 lớp
Class dong vat
{
public: virtual void keu()
{
//vì đây là chùng không thể định nghĩa được nên vào hàm con gọi nó sẽ k đúng ngữ cảnh
chẳng lẽ con mèo lại kêu tiếng gâu của con chó nên ta chỉ định nghĩa nó là phương thức thuần ảo
rồi từ đó qa lớp con để định nghĩa lại
void virtual keu() = 0
}
}

khi khai báo thuần ảo xong thì ta qa lớp con chó định nghĩa lại hàm kêu
class concho
{
public : void keu()
{
cout <<“gau gau”;
}
}

foreverandone viết 02:48 ngày 01/10/2018

hay lắm anh ơi, thuần ảo anh ví dụ hay và dễ hiểu lắm, em xem xong, ok ngay, anh nói về phương thức ảo giúp em với ạ. em cứ nghĩ thế này, phương thức ảo, em củng để nó thuần ảo, xong, ở class nào cần xài thì cứ định nghĩa nó và xài,sao ở lớp cơ sở nhất quyết phải định nghĩa nó ở đó nhỉ. em ko hiểu ý nghĩa đoạn này

Quân viết 03:01 ngày 01/10/2018

phương thức ảo là phương thức không xác định được implement cụ thể xác định tại thời điểm biên dịch vì phụ thuộc vào đối tượng cụ thể lúc thực hiện chương trình mà sẽ quyết định method cụ thể được implement ở class cụ thể. Bởi thế ngta mới gọi là phương thức ảo. Đối nghịch là phương thức k ảo tức là ngay tại lúc biên dịch đã biết nó làm những gì rồi.

phương thức thuần ảo là phương thức ảo, nhưng không có implement khi khai báo ở class cơ sở. Các class con muốn sử dụng method này sẽ phải tự định nghĩa. Có thế thôi.

Lí do vì sao ở lớp cơ sở phải định nghĩa phương thức ảo là để khai báo 1 hành vi mặc định khi không có lớp con định nghĩa hành vi của phương thức ảo này, ngoài ra cũng là vấn đề sử dụng lại code. Khi nào dùng thuần ảo và khi nào dùng ảo thì phụ thuộc vào thiết kế chương trình của bạn.

foreverandone viết 02:46 ngày 01/10/2018

chuẩn quá anh ơi. em hiểu cái ý nghĩa của nó,nhưng ko tự tin với nó, giờ thì em đã hiểu
rõ về nó rồi, cảm ơn anh rất nhiêu.

Bài liên quan
0