Đú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:
#include<iostream> using namespace std; class tamgiac{ protected : int a,b,c; public: explicit tamgiac(int a, int b, int c) :a(a), b(b), c(c){ } virtual void in(){ } virtual ~tamgiac(){ } }; class tamgiaccan : public tamgiac{ public : explicit tamgiaccan(int a,int b,int c):tamgiac(a,b,c){ } int dacdiem(){ if(a==b||b==c||c==a) return 1; else return 0; } void in(){ tamgiac::in(); } }; int main(){ tamgiaccan c(2,4,3); tamgiac b(0,0,0); tamgiac *p; p=&c; p->in(); return 0; }
Window Style T_T :
C++ Code:
#include<iostream> class tamgiac { protected : int a,b,c; public: explicit tamgiac( int a, int b, int c ) :a( a ), b( b ), c( c ) { } virtual void in() { << a << ',' << b << ','<< c << ')' << endl; } virtual ~tamgiac() { } }; class tamgiaccan : public tamgiac { public : explicit tamgiaccan( int a, int b, int c ):tamgiac( a, b, c ) { } int dacdiem( ) { if( a == b || b == c || c == a ) return 1; else return 0; } void in( ) { tamgiac::in( ); if( dacdiem( ) ) else } }; int main() { tamgiaccan c( 2, 4, 3 ); tamgiac b( 0, 0, 0 ); tamgiac *p; p = &c; p->in( ); return 0; }