函數(shù)重載
函數(shù)不以返回值來區(qū)分重載函數(shù)
函數(shù)不以參數(shù)名來區(qū)分重載函數(shù)
使用重載函數(shù)的時候不要引起二義性
結構函數(shù)也可以重載
函數(shù)重載又叫編譯時多態(tài)
int square(int x)
{
cout<<__FILE__<<__func__<<__LINE__<<endl;
return x*x;
}
float square(float x)
{
cout<<__FILE__<<__FUNCTION__<<__LINE__<<endl;
return x*x;
}
double square(double x)
{
cout<<__FILE__<<__func__<<__LINE__<<endl;
return x*x;
}
多態(tài):運行時多態(tài)
定義一個基類的指針,指向子類的變量
class Shape {
protected:
int width, height;
public:
Shape( int a=0, int b=0)
{
width = a;
height = b;
}
// 虛函數(shù)
virtual int area()
{
cout << "Parent class area :" <<endl;
return 0;
}
// virtual int area() = 0;
// 純 虛函數(shù) = 0 告訴編譯器 沒有主題 因為實現(xiàn)多態(tài) 一般不需要實現(xiàn)父類中的虛函數(shù)
};
class Rectange : public Shape{
public:
Rectange (int a = 0, int b= 0) : Shape(a, b){
}
int area(){
cout << "Rectangle class area :" <<endl;
return (width * height);
}
};
class Triangle : public Shape{
public:
Triangle (int a = 0, int b= 0):Shape(a, b){
}
int area(){
cout << "Triangle class area :" <<endl;
return (width * height);
}
};
// 使用
Shape *shape;
Rectange rec(10, 7);
Triangle tri(20, 8);
// 存儲正方形的 地址
// 調用的是 矩形的求面積公式
shape = &rec;
shape->area();
// 調用的三角形的求面積方法
shape = &tri;
shape->area();
// 如果基類中沒有用virtual修飾纺蛆, 那么 調用的就是基類中的 area方法了