- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲 C++面向对象程序设计(二) 严宣辉 教学提纲 一、教学内容: 常数据成员、常成员函数、常对象、静态成员、友元。 二、学时:两课时 三、教学目的和要求 掌握常数据成员、常成员函数和常对象的特性与使用方法。 掌握静态成员、友元的特性与使用方法 四、教学重点和难点 重点:友元 难点:友元 五. 教学过程提要 类与const 静态成员 友元 布置作业和实验3 内容提要 3.3 类与const 【例3-6】类与const class CDate { int day, month, year; public: int getDay( ) const { return day; } int getMonth( ) const { return month; } int getYear( ) const; / / ... }; 常成员函数(续) int CDate::getYear( ) const // 正确 { return year; } int CDate:: getYear( ) // 错误 { return year; } 常成员函数(续) int CDate::getYear( ) const { return y++; } 常成员函数(续) 注意: 1、常成员函数不能更改数据成员的值; 2、常成员函数只能调用const成员函数。 3.3.2 常数据成员 类中可以含有常数据成员。如: class Date { const int c1; …… 在类中声明数据成员时,只能通过成员初始化列表的方式来生成构造函数对数据成员初始化: CStudent::CStudent(int n, char *na, float s,int h):c1(n) {……} 3.3.3 常对象constant object 常对象是指对象常量,定义格式如下: 类名 const 对象名 或者: const 类名 对象名 例如: const CDate cd; 常对象 (续1) 注意: 1、必须对常对象进行初始化,而且不能被更新。 2、常对象只能调用它的常成员函数。 3、普通的对象既可以调用常成员函数,也可以调用普通成员函数。 请看下面的例子: 常对象(续2) class CDate { public: void addYear(int a); CDate(int y); int getYear() const; CDate(); virtual ~CDate(); private: int year; }; 常对象 (续3) void fun1(CDate d, const CDate cd) { int i = d.getYear( ) ; // ok d.addYear(1) ; // ok int j = cd.getYear( ) ; // ok cd.addYear(1) ; // 错误 } 3.4 静 态 成 员 3.4.2 静态成员函数 3.5 友 元 【例3-8】友元函数的定义和使用方法。 #include “iostream.h” class CX { private: int m_x; public: CX(int i) { m_x=i; } int getx(); friend void f_sum(CX a, CX b); //声明友元函数 }; int CX::getx() { return m_x; } void f_sum(CX a,CX b) //定义函数 { cout用友元函数求和:a.m_x+b.m_xendl; //可以访问类的私有成员 } void sum1(CX a,CX b) //定义普通函数 { cout 调用类接口函数求和:a.getx()+b.getx()endl; } 说明: 3.4.2 友元类 //Cla_1的构造函数定义 Cla_1::Cla_1(char *str, int i) { name=str; age=i; } //定义类Cla_2 class Cla_2 { public: void show(Cla_1 x); } ; // Cla_2的show函数定义 void Cla_2::show(Cla_1 x) { cout\n\
文档评论(0)