Cocos2dx之C++基礎(四)
函式過載
函式不以返回值來區分過載函式
函式不以引數名來區分過載函式
使用過載函式的時候不要引起二義性
結構函式也可以過載
函式過載又叫編譯時多型
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;
}
多型:執行時多型
定義一個基類的指標,指向子類的變數
class Shape {
protected:
int width, height;
public:
Shape( int a=0, int b=0)
{
width = a;
height = b;
}
// 虛擬函式
virtual int area()
{
cout << "Parent class area :" <<endl;
return 0;
}
// virtual int area() = 0;
// 純 虛擬函式 = 0 告訴編譯器 沒有主題 因為實現多型 一般不需要實現父類中的虛擬函式
};
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方法了
相關文章
- iOS動畫系列之四:基礎動畫之平移篇iOS動畫
- Django基礎之四(日誌)【待續】Django
- C++ 基礎C++
- c++基礎C++
- oracle spatial之基礎知識之四空間索引Oracle索引
- 【基礎篇索引】索引基礎(四)索引
- java基礎學習之四:修飾符Java
- Python基礎之四:Python3 基礎資料型別Python資料型別
- 逆向基礎(四)
- Dart基礎(四)Dart
- java基礎(四)Java
- C++基礎::StreamC++
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- 測試基礎(四)Jmeter基礎使用JMeter
- 【C++】C++基礎知識C++
- Objective-C基礎之四(深入理解Block)ObjectBloC
- 妥妥的去面試之Android基礎(四)面試Android
- Kotlin基礎四Kotlin
- 儲存基礎(四)
- C++基礎語法C++
- C++基礎 constC++
- C++基礎::stringC++
- C++基礎總結C++
- C++基礎知識C++
- 前端基礎之jQuery基礎前端jQuery
- 自學黑馬系列C++基礎之跳轉語句C++
- 如何使用C++語言列印一個平行四邊形 - NOIP基礎C++
- cocos2dx之CCSpriteFrameCache
- OC基礎-(四)KVC、KVO
- Struts2 基礎(四)
- 【調優】CBO基礎(四)
- Django基礎四之測試環境和ORM查詢DjangoORM
- Vue.js 學習筆記之四:Vue 元件基礎Vue.js筆記元件
- 【01】C到C++(基礎)C++
- c++基礎三(變數)C++變數
- 面試總結(C++基礎)面試C++
- C++基礎::檔案流C++
- C++基礎:: struct vs classC++Struct