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 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á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