Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: [ Solved ]Như thế này có gọi là use hàm ảo + đa hình không?

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    30

    Question [ Solved ]Như thế này có gọi là use hàm ảo + đa hình không?

    Mình làm thử , mong mọi người góp ý .Thanks!
    C++ Code:
    1. #include<iostream>
    2. #include<conio.h>
    3. class tamgiac
    4. {
    5.     public:
    6.         int a,b,c;
    7.         tamgiac(int oa=0,int ob=0,int oc=0)
    8.         {   a=oa;   b=ob;   c=oc;   }
    9.         virtual void in()
    10.         {
    11.             cout<<"Do dai cac canh ("<<a<<','<<b<<','<<c<<')'<<endl;
    12.         }
    13. };
    14. class tamgiaccan:public tamgiac
    15. {
    16.     public:
    17.         tamgiaccan(int a,int b,int c):tamgiac(a,b,c)
    18.         {}
    19.         int dacdiem()
    20.         {
    21.             if(a==b||b==c||c==a)    return 1;
    22.             else  return 0;
    23.         }
    24.         void in()
    25.         {
    26.             tamgiac::in();
    27.             if(dacdiem())   cout<<"Tam giac can ";
    28.             else  cout<<"Tam giac khong can";
    29.         }
    30. };
    31. int main()
    32. {
    33.     clrscr();
    34.     tamgiaccan c(2,4,3);
    35.     tamgiac *p;
    36.     p=&c;
    37.     p->in();
    38.     getch();
    39.         return 0;
    40. }

    Chú ý bỏ code vào thẻ code.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi rox_rook : 16-04-2008 lúc 11:59 PM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Đúng rùi, tuy nhiên viết virtual thì nên thêm virtual destructor, và xài protected cho data của base class. Constructor nếu đã không có ý định cho nhập vào thì bụp ngay vào cho nó "explicit" keyword.
    C++ Code:
    1. #include<iostream>
    2.  
    3. using namespace std;
    4. class tamgiac{
    5. protected :
    6.   int a,b,c;
    7. public:
    8.   explicit tamgiac(int a, int b, int c)
    9.     :a(a), b(b), c(c){
    10.   }
    11.   virtual void in(){
    12.     cout<<"Do dai cac canh ("<<a<<','<<b<<','<<c<<')'<<endl;
    13.   }
    14.   virtual ~tamgiac(){
    15.   }
    16. };
    17.  
    18. class tamgiaccan : public tamgiac{
    19. public :
    20.   explicit tamgiaccan(int a,int b,int c):tamgiac(a,b,c){
    21.   }
    22.   int dacdiem(){
    23.     if(a==b||b==c||c==a)
    24.       return 1;
    25.     else
    26.       return 0;
    27.   }
    28.   void in(){
    29.     tamgiac::in();
    30.     if(dacdiem())   cout << "Tam giac can ";
    31.     else            cout << "Tam giac khong can";
    32.   }
    33. };
    34.  
    35. int main(){
    36.   tamgiaccan c(2,4,3);
    37.   tamgiac b(0,0,0);
    38.   tamgiac *p;
    39.   p=&c;
    40.   p->in();
    41.   return 0;
    42. }

    Window Style T_T :
    C++ Code:
    1. #include<iostream>
    2.  
    3. class tamgiac
    4. {
    5. protected :
    6.     int a,b,c;
    7. public:
    8.     explicit tamgiac( int a, int b, int c )
    9.         :a( a ), b( b ), c( c )
    10.     {
    11.     }
    12.     virtual void in()
    13.     {
    14.         std::cout << "Do dai cac canh ("
    15.                   << a << ','
    16.                   << b << ','<< c << ')' << endl;
    17.     }
    18.  
    19.     virtual ~tamgiac()
    20.     {
    21.     }
    22. };
    23.  
    24. class tamgiaccan : public tamgiac
    25. {
    26. public :
    27.     explicit tamgiaccan( int a, int b, int c ):tamgiac( a, b, c )
    28.     {
    29.     }
    30.     int dacdiem( )
    31.     {
    32.         if( a == b || b == c || c == a )
    33.             return 1;
    34.         else
    35.             return 0;
    36.     }
    37.  
    38.     void in( )
    39.     {
    40.         tamgiac::in( );
    41.         if( dacdiem( ) )  
    42.             cout << "Tam giac can ";
    43.         else              
    44.             cout << "Tam giac khong can";
    45.     }
    46. };
    47.  
    48. int main()
    49. {
    50.     tamgiaccan c( 2, 4, 3 );
    51.     tamgiac b( 0, 0, 0 );
    52.     tamgiac *p;
    53.     p = &c;
    54.     p->in( );
    55.  
    56.     return 0;
    57. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 17-04-2008 lúc 02:47 AM.

  3. #3
    Ngày gia nhập
    01 2008
    Bài viết
    30

    Hì ! Thanks! Mình mới học mừ!Mong được chỉ giáo nhìu !
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. [ Solved ]Thắc mắc về chương trình in ra chữ Việt
    Gửi bởi thichgame trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 28-11-2008, 06:39 AM
  2. [ Solved ]Một bài toán thú vị
    Gửi bởi Mr tiger tide trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 23-08-2008, 06:39 AM
  3. [ Solved ] Làm thế nào để trở thành 1 developer giỏi.
    Gửi bởi quachnguyen trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 19-08-2008, 05:57 PM
  4. [ Solved ]Một số thắc mắc về OOP
    Gửi bởi the-misery trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-05-2008, 06:08 PM
  5. [ Solved ]Thắc mắc về Kế thừa
    Gửi bởi ktwiz trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 22-03-2008, 06:24 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn