C++考試第四章 (第四天)

/*類和對象

1.類和實例化定義類聲明類定義成員函數(shù)數(shù)據(jù)成員的賦值使用類的對象。

2.構(gòu)造函數(shù)數(shù)據(jù)封裝默認(rèn)構(gòu)造函數(shù)定義構(gòu)造函數(shù)構(gòu)造函數(shù)和元運算符new構(gòu)造函數(shù)的默認(rèn)參數(shù)

復(fù)制構(gòu)造函數(shù)析構(gòu)函數(shù)和運算符delete默認(rèn)析構(gòu)函數(shù)調(diào)用復(fù)制構(gòu)造函數(shù)的綜合實例旬昭。

3.成員函數(shù)的重載及默認(rèn)參數(shù)

4.this指針

5.一個類的對象作為另一個類的成員

6.類和對象的性質(zhì)(空類類作用域)

7.標(biāo)記圖UML標(biāo)記圖

8巍膘。編譯指令嵌入指令宏定義條件編譯指令define操作符

9.條件編譯蒲讯。

作業(yè)題并炮、鞠值、

*/

/*4.8類和對象的性質(zhì)

對象的性質(zhì):

1.同一個類的對象直接可以相互賦值矿辽,Point A,B;B=A;

2.可使用對象數(shù)組钉赁。Point A[3];

3.可使用指向?qū)ο蟮闹羔樚阊辏褂萌〉刂?amp;講一個對象的地址至于這個指針中。Point * p=&A

p->Display();

4.對象可以用作函數(shù)參數(shù)你踩,

1.如果參數(shù)傳遞采用傳對象值的方式如果參數(shù)傳遞采用傳對象值的方式

在被調(diào)用函數(shù)中對形參所作的改變不影響調(diào)用函數(shù)中作為實參的對象诅岩。

2.如果傳的是對象的引用當(dāng)參數(shù)對象被修改時,相應(yīng)的實參也將被修改姓蜂。

3.如果傳值是對象的地址值按厘,可以使用對象指針作為函數(shù)參數(shù),為了避免被調(diào)用函數(shù)修改原來對象的數(shù)據(jù)成員可以使用const修飾符钱慢。

5.對象可以作為函數(shù)的參數(shù)逮京。可以使用對象束莫,對象引用和對象指針懒棉。

6.一個對象可以用作另一個類的成員

類的性質(zhì):

1.類本身的成員函數(shù)可以使用類的所有成員私有和共有成員草描。

2.類的對象只能訪問共有成員函數(shù)

3.其他函數(shù)不能使用類的私有成員。也不能使用使用

4.雖然一個類可以包含另外一個類的對象但這個類也只能通過被包含的對象使用哪個類

2.不完全的類聲明策严。

class MemberOnaly;//不完全的類聲明

MemberOnaly * cludb;

3.空類

盡管類的目的是封裝和數(shù)據(jù)他可以產(chǎn)生空類對象穗慕。

class Empty{

}

沒有聲明行為但是可以產(chǎn)生空類的對象。

4.類作用域

{}花括號里面

4.9面向?qū)ο蟮臉?biāo)記圖

類和對象的UML標(biāo)記圖妻导。

OOP面向?qū)ο?/p>

OOA面向?qū)ο蠓治?/p>

OOD面向?qū)ο笤O(shè)計逛绵。

對象的結(jié)構(gòu)與連接:

對象結(jié)構(gòu)是指對象之間的分類(繼承)和組合(聚合)關(guān)系稱為關(guān)聯(lián)關(guān)系。

對象之間的靜態(tài)關(guān)系是通過對象屬性之間的連接反應(yīng)的稱為實例連接

對象行為之間的動態(tài)關(guān)系是通過對象行為之間的依賴關(guān)系表現(xiàn)稱之為消息連接倔韭。

消息連接和實例統(tǒng)稱為連接术浪。

使用實例

4.9.4

1有一個狀態(tài),由與其關(guān)聯(lián)的屬性值結(jié)合所表征寿酌。

2.有唯一標(biāo)識名胰苏,可以qu

2.有唯一標(biāo)示名,每個操作決定對象的一種行為醇疼。

3.對象的狀態(tài)只能被自己的行為所改變

編譯指令C++的源程序可包含各種編譯指令

1.嵌入指令#include

2.宏定義

#define

3.條件編譯指令

4硕并。#define操作符

#ifdef head

#define head

#endif

*/

//#if !defined(i)

//#define i//前兩句是什么意思啊秧荆?倔毙?

//#else

/*作業(yè)題

1.數(shù)據(jù)成員和成員函數(shù)。

2.類名重載一個

3.fun:fun(fun &)

fun:fun(const fun &)

二辰如。選擇題

1.class是能封裝C++的關(guān)鍵字

2.C

3. Point::~Point()

4普监,B

5.C

6.C

7.D當(dāng)用new運算符動態(tài)產(chǎn)生類的對象時,new運算符也是自動調(diào)用構(gòu)造函數(shù)琉兜、

三,改錯題

return m.

2.最后一個沒有return

3完成程序題

1毙玻,

#include

using namespace std;

class base

{

private:

int x,y;

public:

void print();

voidinit(int,int);

};

void base::init(int a, int b)

{

x=a;

y=b;

}

void base::print()

{

cout<

}

int main()

{

base a;

a.init(68,66);

a.print();

}

2.完成下面類中的長遠(yuǎn)函數(shù)的定義

#include

using namespace std;

class Point{

private:

int m,n;

public:

Point (int,int);

Point(Point &);

};

Point::Point(int a,int b)

{

m=a;

n=b;

cout<

}

Point ::Point(Point &t)

{

m=t.m;

n=t.n;

cout<

}

int main()

{

Point C(12,324);

Point D(C);

}

*/

/*4.7一個類的對象作為另一個類的成員

#include

using namespace std;

class Point{

int x,y;

public:

void set(int a,int b)

{

x=a;

y=b;

}

int GetX()

{

return x;

}

int GetY()

{

return y;

}

};

class Rectangle{

Point Loc;

intH,W;

public:

void set(int x,int y,int h,int w);

Point * getLoc();

int getHeight(){

return H;

}

int getWeight()

{

return W;

}

};

void Rectangle::set(int x, int y, int h, int w)

{

Loc.set(x, y);

H=h;W=w;

}

Point * Rectangle::getLoc(){

return &Loc;

}

int main()

{

Rectangle rect;

rect.set(10, 10, 25, 30);

cout<

Point * p=rect.getLoc();

cout<GetX()<<"---"<GetY();

}

五程序分析題一

#include

using namespace std;

class base{

private:

int a,b;

public:

~base(){

cout<<"析構(gòu)函數(shù)"<

}

base (int a,int b)

{

cout<<"初始化"<

}

};

int main()

{

base(12, 12);

}

五程序分析題二

#include

using namespace std;

class base{

private:

int x;

public:

void setx(int a){

x=a;

}

int getx()

{

return x;

}

};

int main()

{

int * p;

base a;

a.setx(55);

p=new int(a.getx());

cout<<*p;

}

六編程題

1.設(shè)計一個點類Point再設(shè)計一個矩形類豌蟋。矩形類使用Point類的兩個坐標(biāo)點作為矩形的對角訂單,并可以輸出4個坐標(biāo)值和面積桑滩,使用測試程序驗證程序梧疲。

2.使用內(nèi)聯(lián)函數(shù)設(shè)計一個類,用來表示指教坐標(biāo)系中的任意一條直線并輸出它的屬性运准。

七幌氮。作圖題

1.假設(shè)不涉及操作,已經(jīng)定義了類line使用繼承的方法組成Rectangle類胁澳。

2.假設(shè)不涉及操作该互,已經(jīng)定義了類Line使用聚合的方法組成Rectangle類。

*/

/*七作圖題

1.假設(shè)不涉及操作韭畸,已經(jīng)定義了類line使用繼承的方法組成Rectangle類宇智。

*/


/*七作圖題

2.假設(shè)不涉及操作蔓搞,已經(jīng)定義了類Line使用聚合的方法組成Rectangle類。

*/

/* 2.使用內(nèi)聯(lián)函數(shù)設(shè)計一個類随橘,用來表示指教坐標(biāo)系中的任意一條直線并輸出它的屬性喂分。

#include

#include

using namespace std;

class LineS{

private:

int x,y,x2,y2;

public:

LineS();

LineS(int =0,int=0,int =0,int =0);

void printPoint();

double getLength();

};

LineS::LineS(int a,int b,int c,int d)

{

x=a;

}

inline void LineS::printPoint()

{

cout<

cout<

}

inline double LineS::getLength()

{

double length;

length=sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));

return length;

}

int main()

{

LineS line(10,80,-10,12);

line.printPoint();

cout<

}

*/

/* 1.設(shè)計一個點類Point再設(shè)計一個矩形類。矩形類使用Point類的兩個坐標(biāo)點作為矩形的對角訂單机蔗,并可以輸出4個坐標(biāo)值和面積蒲祈,使用測試程序驗證程序。

#include

using namespace std;

class Point

{

private:

int x, y;

public:

Point()

{

x=0;

y=0;

}

Point(int a,int b)

{

x=a;

y=b;

}

void setXY(int a,int b)

{

x=a;

y=b;

}

int getX()

{

return x;

}

int getY()

{

return y;

}

};

class Rectangele//矩形

{

private:

Point point1,point2,point3,point4;

public:

Rectangele();

void init()

{

point2.setXY(point4.getX(), point1.getY());

point3.setXY(point1.getX(), point4.getY());

}

Rectangele(Point one,Point two)

{

point1=one;

point4=two;

init();

}

Rectangele(int x1,int y1,int x2,int y2)

{

point1.setXY(x1, y1);

point4.setXY(x2, y2);

init();

}

void printPoint()

{

cout<<"A"<

cout<<"B"<

cout<<"C"<

cout<<"D"<

}

int getArea()

{

int height,width,area;

height =point1.getY()-point3.getY();

width=point1.getX()-point2.getX();

area=height* width;

if (area>0) {

return area;

}

else

{

return -area;

}

}

};

int main()

{

Point p1(-15,56),p2(89,-10);

Rectangele r1(p1,p2);

Rectangele r2(1,5,5,1);

cout<<"矩形"<

r1.printPoint();

cout<<"矩形r1的面積"<

r2.printPoint();

cout<<"矩形的面積"<

}

*/

/*4.6this指針隱藏著的this

void Point::setxy(int a,int b,(Point *)this)

{

this->x=a;

this->y=b;

}

*/

/*4.5成員函數(shù)重載以及默認(rèn)參數(shù)

class MAX{

private:

int a,b,c,d;

int maxi(int,int);

public:

void Set(int,int,int,int);

int maxi();

}A[3];//聲明類的對象數(shù)組萝嘁,定義結(jié)束

int MAX::maxi(int x, int y)

{

return (x>y)?x:y;

}

void MAX::Set(int x1=0, int x2=0, int x3=0, int x4=0)

{

a=x1;

b=x2;

c=x3;

d=x4;

}

int MAX::maxi(){

int x=maxi(a, b);

int y=maxi(c, d);

return maxi(x, y);

}

#include

using namespace std;

int main()

{

A[0].Set(12, 23, 45, 56);

A[1].Set(12, 45, 79);

A[2].Set(12, 45);

for (int i=0; i<3; i++) {

cout<

}

}

*/

/*默認(rèn)析構(gòu)函數(shù)

Point::~Point()

調(diào)用復(fù)制函數(shù)的綜合實例

#include

using namespace std;

class Point{

private:

int x,y;

public:

Point(int a=0,int b=0)

{

x=a;y=b;cout<<"構(gòu)造函數(shù)"<

}

Point (const Point &p);

int Getx(){

return x;

}

int GetY(){

return y;

}

void show()

{

cout<

}

~Point()

{

cout<<"delete"<

}

};

Point::Point(const Point &p)

{

x=p.x;

y=p.y;

cout<<"copy"<

}

void display(Point p)

{

p.show();

}

void disp(Point &p)

{

p.show();

}

Point fun()

{

Point A(101,23);

return A;

}

int main()

{

Point A(42,35);

Point B(A);

Point C(58,95);

cout<<"dispaly(b)"<

display(B);

cout<<"dis(b)"<

disp(B);

cout<<"fun "<

C=fun();

cout<<"DSA"<

disp(C);

}

*/

/*析構(gòu)函數(shù)和運算符delete

#include

using namespace std;

class Point

{

private:

int x,y;

public:

Point(int=0,int =0);

~Point();

};

Point::Point(int a,int b):x(a),y(b)

{

cout<

}

Point::~Point()

{

cout<<"默認(rèn)"<

}

int main()

{

Point * p=new Point[2];

delete []p;

}

*/

/*4.7構(gòu)造函數(shù)的默認(rèn)參數(shù)

#include

using namespace std;

class Point {

private:

int x,y;

public:

Point(int=0,int =0);

};

Point::Point(int a,int b):x(a),y(b){

cout<<"構(gòu)造函數(shù)"<

}

int main()

{

Point A;

Point B(15,24);

Point c[2];

}

*/

/*4.2.5復(fù)制構(gòu)造函數(shù)

A::A(A&)

A::A(const A&)

Point (Point& t)

*/

/*析構(gòu)函數(shù)

定義析構(gòu)函數(shù)

~Point()

{

cout<<"自動調(diào)用析構(gòu)函數(shù)"

}

voidmain()

{

Point A(3,4);

cout<<"main"<

}

*/

/*4.5使用前面定義的Point類演示全局對象的例子

構(gòu)造函數(shù)和運算符new

4.6

#include

using namespace std;

class Point{

private:

int x,y;

public:

Point();

Point(int,int);

};

Point::Point():x(0),y(0)

{

cout<<"默認(rèn)"<

}

Point::Point(int a,int b):x(a),y(b)

{

cout<

}

int main()

{

//演示new運算符和構(gòu)造函數(shù)的關(guān)系讳嘱。

Point * p=new Point;

Point * p2=new Point(5,7);

delete p;

delete p2;

return 0;

}

*/

/* 2.構(gòu)造函數(shù)數(shù)據(jù)封裝默認(rèn)構(gòu)造函數(shù)定義構(gòu)造函數(shù)構(gòu)造函數(shù)和元運算符new構(gòu)造函數(shù)的默認(rèn)參數(shù)

復(fù)制構(gòu)造函數(shù)析構(gòu)函數(shù)和運算符delete默認(rèn)析構(gòu)函數(shù)調(diào)用復(fù)制構(gòu)造函數(shù)的綜合實例。*/

/*默認(rèn)構(gòu)造函數(shù)Point::Point()*/

/*定義構(gòu)造函數(shù)

#include

using namespace std;

class Point{

private:

int x,y;

public:

Point();

Point(int,int);

};

Point::Point():x(0),y(0)

{

cout<<"默認(rèn)"<

}

Point::Point(int a,int b):x(a),y(b)

{

cout<

}

int main()

{

Point A;//使用不帶參數(shù)的構(gòu)造函數(shù)產(chǎn)生對象A

Point B(15,25);//使用帶參數(shù)的構(gòu)造函數(shù)產(chǎn)生對象B

Point C[2];//使用不帶參數(shù)的構(gòu)造函數(shù)產(chǎn)生對象數(shù)據(jù)C

Point D[2]={Point(5,7),Point(8,12)}; //使用帶參數(shù)的構(gòu)造函數(shù)產(chǎn)生對象數(shù)組D

}

*/

/* 1.類和實例化定義類聲明類定義成員函數(shù)數(shù)據(jù)成員的賦值使用類的對象

class類名{

private:私有數(shù)據(jù)和函數(shù)

public:共有數(shù)據(jù)和函數(shù)

protected:保護(hù)數(shù)據(jù)和函數(shù)

}

4.1

class Point{

private:

int x,y;

public:

void setXy(int a,int b);

void Move(int a,int b);

};

2定義成員函數(shù)

酿愧。*/

//void Point::setXy(int a,int b)

//{

//x=a;y=b;

//}

/*內(nèi)聯(lián)函數(shù)

inline int Point::Getx()

{

return x;

}

*/

//數(shù)據(jù)成員的賦值

/*數(shù)據(jù)成員的復(fù)制不能在類內(nèi)給數(shù)據(jù)成員賦值*/

/*使用類的對象

Point A,B;Point *p=&A; Point &R=B;

*/

/*4.2根據(jù)Point的定義演示使用Point類的對象

#include

using namespace std;

class Point{

private:

int x,y;

public:

void setXy(int a,int b);

void Move(int a,int b);

void Display();

};

void Point::setXy(int a,int b)

{

x=a;y=b;

}

void Point::Display()

{

cout<

}

//對象指針名->運算符訪問對象的成員對象指針名->對象成員名

*/

/*4.3例子Point

#include

using namespace std;

class Point

{

private:

int x,y;

public:

void setXY(inta,int b)

{

x=a;y=b;

}

void Move(int &a,int &b)

{

x=x+a;

y=y+b;

}

void Display()

{

cout<

}

int Getx()

{

return x;

}

int GetY()

{

return y;

}

};

void print (Point * a)

{

a->Display();

}

void print(Point &a)

{

a.Display();

}

int main()

{

Point A,B,*p;

Point &RA=A;

int a=25;

int b=25;

A.setXY(a, b);

B=A;

p=&B;

p->Display();

int c=-80;

int d=23;

RA.Move(c,d);

print(A);

print(&A);

return 0;

}

*/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沥潭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嬉挡,更是在濱河造成了極大的恐慌钝鸽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庞钢,死亡現(xiàn)場離奇詭異拔恰,居然都是意外死亡,警方通過查閱死者的電腦和手機基括,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門颜懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人风皿,你說我怎么就攤上這事河爹。” “怎么了桐款?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵咸这,是天一觀的道長。 經(jīng)常有香客問我魔眨,道長媳维,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任遏暴,我火速辦了婚禮侄刽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朋凉。我一直安慰自己州丹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布侥啤。 她就那樣靜靜地躺著当叭,像睡著了一般茬故。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚁鳖,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天磺芭,我揣著相機與錄音,去河邊找鬼醉箕。 笑死钾腺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讥裤。 我是一名探鬼主播放棒,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼己英!你這毒婦竟也來了间螟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤损肛,失蹤者是張志新(化名)和其女友劉穎厢破,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體治拿,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡摩泪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了劫谅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片见坑。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捏检,靈堂內(nèi)的尸體忽然破棺而出荞驴,到底是詐尸還是另有隱情,我是刑警寧澤未檩,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布戴尸,位于F島的核電站,受9級特大地震影響冤狡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜项棠,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一悲雳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧香追,春花似錦合瓢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顿苇。三九已至,卻和暖如春税弃,著一層夾襖步出監(jiān)牢的瞬間纪岁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工则果, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幔翰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓西壮,卻偏偏與公主長得像遗增,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子款青,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容