- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 4 章 C++面向对象
- 2 -
本章目标
理解面向对象编程思想
理解继承和多态的概念
掌握类和对象的关系
掌握静态变量、静态成员函数的使用
掌握继承的实现和使用
掌握多态的实现和使用
- 3 -
类与对象—面向对象的概念
面向对象编程的组织方式围绕“对象”,而不是围绕“行为”;围绕数据,而非逻辑。
面向对象程序采用的观点是“一切都是对象” 。
面向对象分析(OOA)就是以“类”的概念去认识问题、分析问题。
面向对象设计(OOD)是在OOA的基础上进行数据建模,从而建立所要操作的对象以及它们之间的联系
- 4 -
类与对象—面向对象的概念
面向对象的三大特征:
封装对象的属性(状态)和方法(行为)结合在一起,并尽可能隐蔽对象的内部细节。
继承通过吸收现有类的数据(属性)和方法,并增加新功能或修改现有功能来构建新类。
多态在父类中定义的属性或方法被子类继承之后,可以具有不同的表现行为。
- 5 -
类与对象—类的定义
C++中定义类的语法格式如下 :
class class_name
{
access:
constructor_declarations;
attribute_declarations;
method_declarations;
};
class是C++语言关键字,表明这是一个类的定义;
class_name是类的名字;
access具体可取public、protected、private或缺省;
constructor_declarations是类的构造函数;
attribute_declarations是属性,一般称为类的数据成员;
method_declarations是方法,一般称为类的成员函数。
- 6 -
类与对象—构造函数和类的实例化
与一般的函数相比,构造函数有两点不同 :
构造函数具有和它所在的类完全一样的名字
构造函数没有返回类型
//在类的定义文件中,构造函数的声明格式如下:
class class_name
{
public:
class_name([argu_list]);
......
};
- 7 -
类与对象—构造函数和类的实例化
创建对象有两种方法:栈对象和堆对象:
//创建栈对象的方法如下:
class_name obj; //类定义没有提供构造函数,或者要调用缺省构造函数
class_name obj(argu_list); //调用类的带参数的构造函数
//创建堆对象的方法如下:
//类定义没有提供构造函数,或者要调用缺省构造函数
class_name* pobj= new class_name;
//调用类的带参数的构造函数
class_name* pobj= new class_name(argu_list);
- 8 -
类与对象—析构函数
析构函数也是类中的特殊成员函数,要在前面加上一个波浪号“~”。
一个类中只能有一个析构函数。
析构函数执行与构造函数相反的操作,通常用于释放分配给对象的存储空间。
当程序超出类对象的作用域时,或者当对一个类指针使用运算符delete时,系统将自动调用析构函数。
//类的定义文件中,析构函数声明的格式如下:
class class_name
{
public:
~class_name();
......
};
- 9 -
类与对象—成员函数
成员函数(方法)是类行为的体现,其他对象可以根据类的方法对类进行访问。
多数情况下分布在两个文件中(.h和.cpp)。
//.h
class class_name
{
[access]:
return_type methodName([argu_list]);
};
//.cpp
return_type class_name::methodName([argu_list])
{
...... // 具体实现
}
- 10 -
类与对象—内联成员函数
//类定义文件
class Employee
{
public:
......
//类成员函数声明,inline关键字可以省略
inline void SetAge(int nAge);
......
};
//类实现文件,如果成员函数声明时省略了inline关键字,这里就不能省略
inline void Employee ::SetAge(int nAge)
{
m_nAge = nAge;
}
类与对象—静态类成员
- 11 -
与类相关的变量或函数称为静态成员变量或静态成员函数:
//Account.h文件,定义一个银行账户类
class CAccount
{
public:
......
//静态成员函数,增加利率
st
您可能关注的文档
- (HTML5程序设计及实践)第1章HTML5简介.ppt
- (HTML5程序设计及实践)第2章HTML5布局.ppt
- (HTML5程序设计及实践)第3章HTML5表单.ppt
- (HTML5程序设计及实践)第4章HTML5画布.ppt
- (HTML5程序设计及实践)第5章HTML5拖放.ppt
- (HTML5程序设计及实践)第6章HTML5音频和视频.ppt
- (HTML5程序设计及实践)第7章HTML5Web存储.ppt
- (HTML5程序设计及实践)第8章HTML5应用程序缓存.ppt
- (HTML5程序设计及实践)第9章HTML5多线程.ppt
- (HTML5程序设计及实践)第10章HTML5手机应用开发.ppt
- (Visual C++程序设计及实践)第5章WIN32编程.ppt
- (Visual C++程序设计及实践)第6章MFC基础.ppt
- (Visual C++程序设计及实践)第7章MFC文档视图.ppt
- (Visual C++程序设计及实践)第8章MFC对话框.ppt
- (WinForm程序设计及实践)第1章C#概述.ppt
- (WinForm程序设计及实践)第2章C#语言基础.ppt
- (WinForm程序设计及实践)第3章窗体和常用控件.ppt
- (WinForm程序设计及实践)第4章界面设计.ppt
- (WinForm程序设计及实践)第5章面向对象程序设计.ppt
- (WinForm程序设计及实践)第6章ADO.NET数据库访问.ppt
原创力文档


文档评论(0)