14
主主主主1 主主主主主主主主主主主 、; 2 主主主主主主主主主主 、; 3 主主主主主主主主主主主主 、; 4 主主主主主主主主 、;

主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

  • Upload
    korbin

  • View
    133

  • Download
    0

Embed Size (px)

DESCRIPTION

主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;. 类和对象. 内建的类 : 如 string,ifstream,ofstream ; 类声明 (class declaration) ---- 创建类并且将类当作数据类型来使用。 类是一种用户自定义类型,定义形式: class 类名称 { public: 外部接口 protected: 保护型成员 private: 私有成员 }. struct 类名称 { public: 外部接口 - PowerPoint PPT Presentation

Citation preview

Page 1: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

主要内容:

1 、类的声明和对象的定义;

2 、构造函数与析构函数;

3 、类数据成员和类成员函数;

4 、指向对象的指针;

Page 2: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

类和对象 内建的类: 如 string,ifstream,ofstream ; 类声明 (class declaration)

---- 创建类并且将类当作数据类型来使用。 类是一种用户自定义类型,定义形式:

class 类名称{

public:

外部接口 protected:

保护型成员 private:

私有成员}

struct 类名称{

public:

外部接口 protected:

保护型成员 private:

私有成员}

Page 3: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

class Date {

public:

void setDate( int y,int m,int d){year=y;month=m;day=d;}

int IsLeapYear()

{return(year%4==0&&year%100!=0)||(year%400==0);}

void PrintDate(){cout<<year<<month<<day<<endl;}

private:

int year,month,day;

};

Date date1, date2, date[10];

在 C++ 中,以类作为数据类型定义的变量就是对象。类声明描述了封装在类中的数据成员和成员函数。

Page 4: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

数据成员 与一般的变量定义相同,但需要将它放在类的定义体中。 只有类型说明,无存储类说明,即把类的数据成员说明为

auto 、 register 和 extern 是无意义的 其类型可以是基本数据类型和复杂数据类型,或已定义好

的类对象。例如class N{ class M{

public: public:

//… //…

}; private:

N n;

}

对象成员

Page 5: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

成员函数 在类中说明原型,在类外定义函数体实现,并在函数名前使用类名加以限定。也可以直接在类中定义函数体,形成内联成员函数。

允许定义重载函数和带缺省形参值的函数class point{ int i,j,k;public:

point() {i=j=k=0;}point(int I=6,int J,int K) { i=I; j=J; k=K; }void print(const char* msg=" ") const{ if(*msg) cout<<msg<<endl;

cout<<"i="<<i<<","<<"j="<<j<<","<<"k="<<k<<endl; }

};

Page 6: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

C++ 的信息隐藏机制

在类中可以包含以下三种类型的数据和函数成员:私有类型( private )公有类型( public )保护类型( protected )

Private:

在关键字 private 后面声明,如果省略关键字 private ,那么必须紧跟在类的名称后面声明。

私有类型的成员只允许本类中的函数访问,而类外部的任何函数都不能访问。

Page 7: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

Public:

在关键字 public 后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。

Protected:

与 private 类似,其差别表现在继承与派生时对派生类的影响不同

Page 8: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

成员选择符 成员选择符 . 和指针操作符– > 用来实现对类的数据成员和成员函数进行访问。 成员选择符 . 出现在类对象和类成员之间,用来访问数据成员和成员函数,但对象的使用者只能访问类的公有成员。 指针操作符– > 出现在类对象指针和类成员之间。

类范围 类的私有成员具有的性质,即类的私有成员仅由类的成员函数访问,公有成员可在类之外进行访问。 class 声明的类,其类成员在默认情况下具有类范围性质。

Page 9: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

class 和 struct 的区别 使用 class ,类成员在默认状态下是私有的; 使用 struct ,类成员在默认状态下是公有的。

class person

{ int age; // 默认隐藏的数据成员

public: void setage(int n); // 指明暴露

int getage() const; // 不改变数据成员

private: char name[20]; // 指明隐藏

};

Page 10: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

类成员函数的定义

成员函数的定义可在类声明之中进行,也可在类声明之外定义

成员函数在类声明之中进行定义,这种定义方式为内联(incline), 内联定义同时提供了成员函数的声明和定义。

通过 incline 声明成员函数时,可将原本定义在类声明之外的函数强制变成内联函数。

编译时在调用处用函数体进行替换 , 节省了参数传递、控制转移等开销。

Page 11: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

注意:–内联函数体内 ( 最好 ) 不要有循环语句和 switch 语句。–内联函数的定义必须出现在内联函数第一次被调用之前。

例见 313。

类的使用 使用类的关键步骤: 类声明、对象定义以及客户服务请求 例见 314。

Page 12: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

#include <iostream.h>class point{ int i,j,k;public:

point() {i=j=k=0;}point(int I,int J,int K) { i=I; j=J; k=K; }void print(const char* msg=" ") const{ if(*msg) cout<<msg<<endl;

cout<<"i="<<i<<","<<"j="<<j<<","<<"k="<<k<<endl; }

};void main(){ point p,q(1,2,3);

p.print("values of p");q.print("values of q");

}

例313

Page 13: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

#include <iostream.h>class Watch{public:

void SetTime(int NewH=0,int NewM=0, int NewS=0);void ShowTime();

private: int Hour, Minute, Second;

};void Watch::SetTime(int NewH,int NewM,int NewS){ Hour=NewH;

Minute=NewM;Second=NewS; }

void Watch::ShowTime(){ cout<<Hour<<":"<<Minute<<":"<<Second<<endl; }void main(){ Watch myWatch; // 定义对象

myWatch.SetTime(); // 按默认值设置myWatch.ShowTime();myWatch.SetTime(8,30,30);myWatch.ShowTime();

}

例 314

Page 14: 主要内容: 1 、类的声明和对象的定义; 2 、构造函数与析构函数; 3 、类数据成员和类成员函数; 4 、指向对象的指针;

堆栈类 问题的提出 举例说明 解决方案 类的实现

自己看书