C++虚関数の詳細と簡単な例
1404 ワード
C++虚関数の詳細
虚関数の使用と純虚関数の使用.
虚関数は、ベースクラスで定義され、サブクラスがこの関数を書き換えた後、ベースクラスのポインタがサブクラスのオブジェクトを指し、この関数を呼び出すことができます.この関数は、このサブクラスの書き換え機能を同時に保持します.
純虚関数は、ベースクラスで定義する必要がなく、宣言するだけでよい.そして、純虚関数であるため、ベースクラスを生成できないオブジェクトであるが、ベースクラスのポインタを生成することができる.
純虚関数と虚関数の最も主要な違いは,純虚関数が存在するベースクラスはオブジェクトを生成できないが,虚関数のベースクラスはオブジェクトを生成できることである.
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!
虚関数の使用と純虚関数の使用.
虚関数は、ベースクラスで定義され、サブクラスがこの関数を書き換えた後、ベースクラスのポインタがサブクラスのオブジェクトを指し、この関数を呼び出すことができます.この関数は、このサブクラスの書き換え機能を同時に保持します.
純虚関数は、ベースクラスで定義する必要がなく、宣言するだけでよい.そして、純虚関数であるため、ベースクラスを生成できないオブジェクトであるが、ベースクラスのポインタを生成することができる.
純虚関数と虚関数の最も主要な違いは,純虚関数が存在するベースクラスはオブジェクトを生成できないが,虚関数のベースクラスはオブジェクトを生成できることである.
// pointers to base class
#include
using namespace std;
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area(){
return 0;
}
};
class Rectangle: public Polygon {
public:
int area()
{ return width*height; }
};
class Triangle: public Polygon {
public:
int area()
{ return width*height/2; }
};
int main(){
Polygon *p1,*p2;
Rectangle rec;
Triangle tri;
p1 = &rec;
p2 = &tri;
p1->set_values(1,2);
p2->set_values(2,4);
cout << rec.area() << endl;
cout << tri.area() << endl;
cout << p1->area() << endl;
cout << p2->area() << endl;
return 0;
}
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!