1 / 14

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

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

korbin
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 类和对象 • 内建的类: 如string,ifstream,ofstream; • 类声明(class declaration) ----创建类并且将类当作数据类型来使用。 类是一种用户自定义类型,定义形式: • class 类名称 • { • public: • 外部接口 • protected: • 保护型成员 • private: • 私有成员 • } • struct 类名称 • { • public: • 外部接口 • protected: • 保护型成员 • private: • 私有成员 • }

  3. 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++中,以类作为数据类型定义的变量就是对象。 类声明描述了封装在类中的数据成员和成员函数。

  4. 数据成员 • 与一般的变量定义相同,但需要将它放在类的定义体中。 • 只有类型说明,无存储类说明,即把类的数据成员说明为auto、register和extern是无意义的 • 其类型可以是基本数据类型和复杂数据类型,或已定义好的类对象。例如 class N{ class M{ public: public: //… //… }; private: N n; } 对象成员

  5. 成员函数 • 在类中说明原型,在类外定义函数体实现,并在函数名前使用类名加以限定。也可以直接在类中定义函数体,形成内联成员函数。 • 允许定义重载函数和带缺省形参值的函数 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; } };

  6. C++的信息隐藏机制 在类中可以包含以下三种类型的数据和函数成员: • 私有类型(private) • 公有类型(public) • 保护类型(protected) Private: 在关键字private后面声明,如果省略关键字private,那么必须紧跟在类的名称后面声明。 私有类型的成员只允许本类中的函数访问,而类外部的任何函数都不能访问。

  7. Public: 在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。 Protected: 与private类似,其差别表现在继承与派生时对派生类的影响不同

  8. 成员选择符 成员选择符.和指针操作符–>用来实现对类的数据成员和成员函数进行访问。 成员选择符 . 出现在类对象和类成员之间,用来访问数据成员和成员函数,但对象的使用者只能访问类的公有成员。 指针操作符–>出现在类对象指针和类成员之间。 • 类范围 类的私有成员具有的性质,即类的私有成员仅由类的成员函数访问,公有成员可在类之外进行访问。 class声明的类,其类成员在默认情况下具有类范围性质。

  9. class和struct的区别 使用class,类成员在默认状态下是私有的; 使用struct,类成员在默认状态下是公有的。 class person { int age; //默认隐藏的数据成员 public: void setage(int n); //指明暴露 int getage() const; //不改变数据成员 private: char name[20]; //指明隐藏 };

  10. 类成员函数的定义 • 成员函数的定义可在类声明之中进行,也可在类声明之外定义 • 成员函数在类声明之中进行定义,这种定义方式为内联(incline),内联定义同时提供了成员函数的声明和定义。 • 通过incline声明成员函数时,可将原本定义在类声明之外的函数强制变成内联函数。 • 编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销。

  11. 注意: • 内联函数体内(最好)不要有循环语句和switch语句。 • 内联函数的定义必须出现在内联函数第一次被调用之前。 • 例见313。 • 类的使用 使用类的关键步骤: 类声明、对象定义以及客户服务请求 例见314。

  12. 例313 #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"); }

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

  14. 堆栈类 • 问题的提出 • 举例说明 • 解决方案 • 类的实现 • 自己看书

More Related