c的面向对象编程

c的面向对象编程

ID:39963145

大小:252.31 KB

页数:34页

时间:2019-07-16

c的面向对象编程_第1页
c的面向对象编程_第2页
c的面向对象编程_第3页
c的面向对象编程_第4页
c的面向对象编程_第5页
资源描述:

《c的面向对象编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章C++的面向对象编程C++是面向对象的程序设计语言,类是其实现面向对象的工具。类是面向对象程序设计(OOP)实现信息封装的基础,是C++语言最重要的特性。类是进行数据封装和数据保护的工具。本章主要知识点为:类和对象的基本概念;友元;派生类;继承与多重继承;多态;函数重载和运算符重载;虚函数。4.1类和对象的基本概念类是现实事物共有特征的抽象,而对象是类的具体实例。在面向对象的程序设计中,总是先声明类,再由类生成其对象。类是建立对象的模板,对象则是类的一个实例。4.1.1从结构到类在C语言中有一种自定义的数据类型:结构体。结构体中可以函数不同的数据类型。C++语言把结

2、构体进行扩充,它不仅可以含有不同的数据类型,而且可以含有函数。在C++中结构体的定义形式如下:struct结构体名{成员表列}变量名表列;struct是定义结构体的关键字,后面的结构体名是结构体的名称。在结构体中可以定义一个或多个成员变量或这函数。当然也可以不定义变量,此时称为空结构体。变量名表列是在定义结构体时,同时定义结构体变量。也可以不定义变量,在后面用到的地方在定义结构体变量。需要注意的是结构体右括号的变量名表列后面需要添加一个“;”。4.1.2成员函数的定义类中含有两种成分:数据成员和函数成员。函数成员又称为成员函数。成员函数的定义有两种方式。1.方式一2.方式

3、二4.1.3对象的定义与使用对象是类的具体实例,定义好类以后必须去定义类的对象才可以真正的去实现类的功能。一般情况下对象的定义有下面两种情况。1.声明类时直接定义对象2.声明类之后再定义对象4.1.4对象的作用域类是面向对象的体现,它具有一定的数据保护功能。类的作用域就是类的保护功能的机制。类的作用域是指类的声明部分中的一对花括号所形成的作用域。一个类的所有成员都在该类的作用域内。在上面的例子中已经看到类的私有成员变量不可以在类的外部所访问,因此需要定义一个公有成员函数间接的访问类的私有成员。4.2构造函数和析构函数类是一种用户自定义的数据类型。定义一个类的对象时,编译程

4、序需要为对象分配存储空间,进行必要的初始化工作。在C++中类的构造函数就是去实现这部分功能。4.2.1构造函数构造函数是一种特殊的成员函数,它主要进行一些初始化工作。构造函数有一些基本性质:(1)构造函数和类的名字相同。(2)构造函数不具有返回值。(3)定义对象时,系统自动调用构造函数。(4)构造函数是公有函数,但它不可以被显示调用。4.2.2默认参数的构造函数对于有参数的构造函数,在定义对象时必须给构造函数传递参数。实际情况中,虽然有些构造函数有参数,但其参数是不变的,这就是默认参数的构造函数。此时构造函数的形式如下:类名(函数名)(参数1=默认值,参数2=默认值,….

5、.)构造函数中的参数与普通函数的参数是一样的,所谓的默认参数即为该参数设置一个默认的取值。可以为全部或者部分参数设置默认值。4.2.3析构函数析构函数也是一种特殊的成员函数,它执行和构造函数相反的工作。析构的特殊性质如下:(1)析构函数名称与类名相同,但前面加一个“~”。(2)一个类中只有一个析构函数,并且该函数不带任何参数。(3)当撤销对象时编译系统自动调用析构函数。(4)若程序员没有定义析构函数,编译系统会生成析构函数。4.2.4重载构造函数与拷贝构造函数C++允许重载构造函数,所谓的重载构造函数是指允许在类中有多个构造函数。当然这些构造函数肯定是有区别的。各个构造函

6、数必须拥有不同的参数个数或者参数类型。4.3友元类的主要特点是是数据隐藏,即类的私有成员只可以被类的内部使用,但是有的时候需要在类的外部访问类的私有成员,为此C++利用了一种新的机制——友元。4.3.1友元函数友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。在类的定义中声明友元函数时,需要在函数名前面加上friend。友元函数可以定义在类的内部,也可以在类的外部定义。注意:友元在类的封装性中打了个孔,使封装性的强度下降,程序中如非必要,应尽量减少友元的使用。4.3.2友元成员除了一般的函数可以作为类的友元外,一个类的成员函数也可以作为另一

7、个类的友元。这样的函数不仅可以访问本类的所有成员,还可以访问其友元类的所有成员。需要注意的是当在一个类中的某个成员函数定义为另一个类的友元函数时需要首先定义此类。例如要定义类A的某个函数为类B的友元函数,那么需要先定义类B,然后再进行类A的成员函数与B友元的定义。4.3.3友元类不仅函数可以作为一个类的友元,一个类也可以作为另一个类的友元。定义方法是在类的声明中加入语句friend类名。4.4派生类继承是面向对象程序设计的一个重要特性,它允许在现有类的基础上创建新的类,可以继承原有类数据和函数,同时可以添加新的成员。继承特性增

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。