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

/*類和對(duì)象

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

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

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

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

4.this指針

5.一個(gè)類的對(duì)象作為另一個(gè)類的成員

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

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

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

9.條件編譯。

作業(yè)題、、

*/

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

對(duì)象的性質(zhì):

1.同一個(gè)類的對(duì)象直接可以相互賦值,Point A,B;B=A;

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

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

p->Display();

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

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

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

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

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

5.對(duì)象可以作為函數(shù)的參數(shù)。可以使用對(duì)象,對(duì)象引用和對(duì)象指針。

6.一個(gè)對(duì)象可以用作另一個(gè)類的成員

類的性質(zhì):

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

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

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

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

2.不完全的類聲明。

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

MemberOnaly * cludb;

3.空類

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

class Empty{

}

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

4.類作用域

{}花括號(hào)里面

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

類和對(duì)象的UML標(biāo)記圖。

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

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

OOD面向?qū)ο笤O(shè)計(jì)。

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

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

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

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

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

使用實(shí)例

4.9.4

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

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

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

3.對(duì)象的狀態(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.類名重載一個(gè)

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運(yùn)算符動(dòng)態(tài)產(chǎn)生類的對(duì)象時(shí),new運(yùn)算符也是自動(dòng)調(diào)用構(gòu)造函數(shù)、

三,改錯(cuò)題

return m.

2.最后一個(gè)沒有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一個(gè)類的對(duì)象作為另一個(gè)類的成員

#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è)計(jì)一個(gè)點(diǎn)類Point再設(shè)計(jì)一個(gè)矩形類。矩形類使用Point類的兩個(gè)坐標(biāo)點(diǎn)作為矩形的對(duì)角訂單,并可以輸出4個(gè)坐標(biāo)值和面積,使用測試程序驗(yàn)證程序。

2.使用內(nèi)聯(lián)函數(shù)設(shè)計(jì)一個(gè)類,用來表示指教坐標(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è)計(jì)一個(gè)類,用來表示指教坐標(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è)計(jì)一個(gè)點(diǎn)類Point再設(shè)計(jì)一個(gè)矩形類。矩形類使用Point類的兩個(gè)坐標(biāo)點(diǎn)作為矩形的對(duì)角訂單,并可以輸出4個(gè)坐標(biāo)值和面積,使用測試程序驗(yàn)證程序。

#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];//聲明類的對(duì)象數(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ù)的綜合實(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ù)和運(yùn)算符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<<"自動(dòng)調(diào)用析構(gòu)函數(shù)"

}

voidmain()

{

Point A(3,4);

cout<<"main"<

}

*/

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

構(gòu)造函數(shù)和運(yùn)算符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運(yùn)算符和構(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ù)和元運(yùn)算符new構(gòu)造函數(shù)的默認(rèn)參數(shù)

復(fù)制構(gòu)造函數(shù)析構(gòu)函數(shù)和運(yùn)算符delete默認(rèn)析構(gòu)函數(shù)調(diào)用復(fù)制構(gòu)造函數(shù)的綜合實(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)生對(duì)象A

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

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

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

}

*/

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

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ù)成員賦值*/

/*使用類的對(duì)象

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

*/

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

#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<

}

//對(duì)象指針名->運(yùn)算符訪問對(duì)象的成員對(duì)象指針名->對(duì)象成員名

*/

/*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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,143評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,416評(píng)論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,940評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,170評(píng)論 0 287
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,709評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,597評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,784評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評(píng)論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,029評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評(píng)論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,403評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,746評(píng)論 2 370

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