第8,9,10,11,12章-類整理
目錄
8章-類1
二級目錄
三級目錄
9章-類2
二級目錄
資訊保護-const物件,資料成員,成員函式,引用,指標
const: 即只讀模式
常物件:
資料成員的值不能被改變,
定義時就初始化
常物件 只能呼叫const成員函式
普通物件 卻也能呼叫const成員函式
二級目錄
10章-運算子過載
二級目錄
二級目錄
11章-繼承與派生
二級目錄
二級目錄
12章-虛擬函式與多型
習題
1 基類point下的 circle square move
繪製旋轉圖形
#include <iostream>
using namespace std;
class Point
{
double x;
double y;
public:
Point (double i,double j):x(i),y(j){}
void print ()const//不能改變資料成員 ,只是把這個座標列印出來
{
cout<<"("<<x<<","<<y<<")";
}
};
class Figure
{
Point center;
public:
Figure(double i=0,double j=0):center(i,j){ }
Point& location()
{
return center;//把它的個center物件成員弄到手
}
void move(Point p)
{
center=p;//改變其座標物件的值
draw();//然後再畫出這個改變後的figure,draw函式在下邊
}
virtual void draw()=0;
virtual void rotate(double)=0;
};
class Circle:public Figure
{
double radius;
public:
Circle(double i=0,double j=0,double r=0):Figure(i,j),radius(r){}
void draw()//對父類figure中的虛擬函式的實現
{
cout<<"A circle with center ";
location().print();
cout<<"and radius "<<radius<<endl;
}
void rotate(double)//
{
cout<<"no effect operation.\n";
}
};
class Square:public Figure
{
double side;
double angle;
public:
Square(double i=0,double j=0,double d=0,double a=0):Figure(i,j),side(d),angle(a){
}
void draw()
{
cout<<"A square with center ";
location().print();
cout<<" side length"<<side<<'\n'<<"the angle betwen one side and the x-axis is "<<angle<<endl;
}
void rotate(double a)
{
angle+=a;
cout<<"the angle between one side and the x-airs is "<<angle<<endl;
}
void vertices(){
cout<<"the vertices of the square are: 3\n";
}
} ;
int main ()
{
Circle c(1,2,3);
Square s(4,5,6);
Figure* f=&c;
Figure& g=s;
// Figure d;
// f=new Figure(10,10);//這兩個建立抽象類的操作非法
f->draw();//f為基類指標,通過->訪問。而g為引用直接用點.訪問即可。
f->rotate(1);
f->move(Point(2,2)) ;
g.draw();
g.rotate(1);
g.move(Point(1,1));
s.vertices();
// g.vertices();//非法,基類指標不能訪問非繼承所得的成員 ,見下圖解釋
return 0;
}
知識點補充:
2
【例12-5】先建立一個Point(點)類,包含資料成員x,y(座標點)。以它為基類,派生出一個Circle(圓)類,增加資料成員r(半徑),再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高)。要求編寫程式,過載運算子“<<”和“>>”,使之能用於輸出以上類物件。
分析:對於一個比較大的程式,應當分成若干步驟進行。先宣告基類,再宣告派生類,逐級進行,分步除錯。
在這裡插入程式碼片
3 老師ppt結尾的打怪例題–增強可擴充性示例***
1
1
1
相關文章
- 第11章 使用類——再談過載:向量類(二)
- 第2章 個股指標資料匯出與整理指標
- 第10章 物件和類——物件和類(六) 抽象資料型別物件抽象資料型別
- 《Java程式設計邏輯》第3章 類的基礎Java程式設計
- 第 13 章 StringTable
- 第1章 引言
- 【C++ Primer Plus】學習筆記--第10章 物件和類C++筆記物件
- 第2章 表示式
- 第2章 Python序列Python
- 第1章 概論
- 第 1 章:開始
- 第4章函式函式
- 第3章筆記筆記
- 第6章 Java APIJavaAPI
- 第1章 Why RustRust
- Java 第9 章 : 資料表與簡單Java類對映轉換Java
- 第7章 基於樸素貝葉斯的垃圾郵件分類
- 章13——包裝類——Math類
- 章13——包裝類——StringBuilder類UI
- 第17章_反射機制反射
- mORMot 1.18 第06章 概念ORM
- mORMot 1.18 第09章 AutoFreeORM
- 第8 章過程管理
- 7.10 第7章小結
- 第1章 安裝RailsAI
- 第2章 牛刀小試
- 第1章 DevOps的理想dev
- 第1章 pytest入門
- 第3章 收集輸入
- 第2章 功能實現
- 第1章 認識excelExcel
- Java學習第1章Java
- Redis 的第 n 次涉及,我該整理整理了Redis
- Java核心卷1知識點整理——第四章 物件與類(4.1-4.3)Java物件
- 第15.16.17章學習筆記筆記
- 第 4 章 程式計數器
- 第 22 章 備忘錄模式模式
- Pythagorea(3)第16-21章Go