欢迎来到天天文库
浏览记录
ID:50350161
大小:407.00 KB
页数:24页
时间:2020-03-08
《C++程序设计 教学课件 作者 任化敏 chapter09-类.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计第二部分:面向对象编程第九章类第九章类类的概述构造函数和析构函数友元静态成员类作用域9.1类的概述在C语言和其他面向过程的编程语言中,编程总是面向操作,然而在C++中编程是面向对象的。类在C++中占有十分重要的地位,它是实现面向对象程序设计的基础。类定义了数据成员和成员函数,数据成员用于存储与该类类型的对象相关联的数据状态,而成员函数则负责执行赋予数据意义的操作。9.1.1类定义一个类的一般定义格式为:class<类名>{private:<数据成员或成员函数1>;……public:<数据成员或成员函数2
2、>;……protected:<数据成员或成员函数3>;……};数据成员数据成员的定义方式与一般变量相同,区别在于在类中可以设置外界对类的数据成员的访问权限,即public或者private数据成员的类型可以是任何已有的类型,包括整型、浮点型、字符型、数组、指针和引用等成员函数与普通函数的定义类似包括函数返回类型函数名用逗号隔开的形参表(形参可以为空)包含在一对花括号里面的函数体类定义示例classStudent{public://公有数据成员stringstuId;stringname;intage;private:/
3、/私有数据成员vectorcourses;public://公有成员函数Student(stringstuId,stringname,intage);//构造函数~Student(void);//析构函数voidsetCourses(vectorcourses);vectorgetCourses();voidsetName(stringname){this->name=name;}stringgetName(){returnname;};voidsetId(st
4、ringstuId){this->stuId=stuId;}stringgetId(){returnstuId;}voidsetAge(intage){this->age=age;}intgetAge(){returnage;}};9.1.2数据抽象和封装数据抽象是一种依赖于接口和实现分离的编程技术封装是一项将低层次的元素组合起来形成新的、高层次实体的技术9.1.3访问标号public(公有的)公有成员可被与该类对象处在同一作用域内的任何函数访问private(私有的)私有成员只能被类中的成员函数及该类的友元函数访问p
5、rotected(保护的)保护成员只能被类中成员、派生类的成员函数或该类的友元函数访问进一步解释一个访问标号可以出现的次数通常是没有限制的每个访问标号指定了随后的成员定义的访问级别,这个指定的访问级别持续有效,直至遇到下一个访问标号或看到类定义体的右花括号为止可以在任意的访问标号出现之前定义类成员在类的左花括号之后,第一个访问标号之前定义成员的访问级别,其值依赖于类是如何定义的。如果类是用Struct关键字定义的,则在第一个访问标号之前的成员是公有的;如果类是用class关键字定义的,则这些成员是私有的。9.1.4类对
6、象把类类型的变量称为对象或类的实例说明对象的一般格式为类名对象名1<,对象名2,对象名3…>;类的定义中,一旦遇到右花括号,类的定义就结束了,且类的所有成员以及存储该类的对象所需的存储空间也随之确定访问对象的成员的形式对象名.数据成员对象名.成员函数名(实参)9.1.5this指针一个成员函数被调用时,系统自动向它传递一个隐含的指针,该指针是调用该成员的对象的指针,在成员函数的函数体中可直接用this使用该指针。9.2构造函数和析构函数9.2.1构造函数构造函数(Constructor)是一个重要的成员函数。创建一个类
7、类型的对象时,编译器会自动使用一个构造函数来初始化该对象。构造函数是特殊的成员函数,与其他成员函数不同,构造函数和类同名,而且没有返回类型。而与其他成员函数相同的是,构造函数也有形参表和函数体,其中形参表也是可以为空的。格式为:类名([可选的参数列表]){}//类内实现类名::~类名([可选的参数列表]){}//类外实现9.2.2带有成员初始化表的构造函数构造函数初始化列表由成员名和带括号的初始值组成,跟在构造函数的形参表之后,并以冒号开头构造函数的初始化式是一系列成员名,每个成员名后面是括在圆括号中的初始值。多个成员
8、初始化用逗号分隔。如果没有为一个类显式的定义任何构造函数呢?编译器会自动为这个类生成默认的构造函数。由编译器创建的默认构造函数通常被称作合成构造函数(synthesizeddefaultconstructor),它将依据如同变量初始化的规则初始化类中的所有成员。如果该类中的数据成员包含另一个类类型的对象,则会调用那个类自身的默认构
此文档下载收益归作者所有