记录c++学习的新概念
目录
目录
1.类(Class)
C和C++的程序设计思想的区别:
C语言--面向过程的程序设计思想
自顶向下,逐步求精;
一个main函数+若干子函数。
C++语言--面向对象的程序设计思想
实现软件设计的产业化;
自然界是由实体(对象)组成的;
面向对象程序设计思想的重要概念:
(1)抽象:对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。
数据抽象:例如某个人的信息。
行为抽象:例如某个人的行为。
(2)封装:将抽象出的数据成员、行为成员相结合,将他们视为一个整体--类。
使用者不需要了解具体的实现细节,只需要通过接口使用类的成员即可。
(3)继承与派生:保持原有类特性的基础上,进行更具体的说明。
类的定义
类(class)是用户自定义数据类型。如果程序中要使用类类型(class type),必须根据实际需要定义,或者使用已设计好的类。
C++定义一个类,其方法与定义一个结构体类型是相似的,一般形式为:
class 类名 { //类体
成员列表
};
其中成员列表(memberlist)是类成员的集合,数目可以任意多由具体应用确定。一对大括号{}是成员列表边界符,与成员列表一起称为类体(class body)。类体后面必须用分号(;)结束。
ps:1 每个类可以没有成员,也可以有多个成员。
2 类成员可以是数据或函数。
3 所有成员必须在类的内部声明,一旦类定义完成后,就没有任何其他方式可以再增加成员了。
类定义时必须给出各个数据成员(data member)的数据类型声明,其一般形式为:
class 类名 { //类体
数据成员类型 数据成员名列表; //数据成员声明
}
声明时成员名列表允许为多个,用逗号(,)作为间隔,最后必须用分号(;)结束。
ps:1 每个类还可以包含成员函数,能够访问类自身的所有成员。
2 面向对象程序设计一般将数据隐蔽起来,外部不能直接访问,而把成员函数作为对外界的接口,通过成员函数访问数据。即数据成员是属性,成员函数是方法,通过方法存取属性。
3 如果类中有成员函数,则声明成员函数是必需的,而定义成员函数则是可选的,因此类的成员函数有两种形式。
①在类中定义(也是声明)成员函数,形式如下
class 类名 { //类体
...
返回类型 函数名(形式参数列表) //成员函数定义
{
函数体
}
...
}
②成员函数的声明在类中,定义在类外部,形式:
class 类名 { //类体
...
返回类型 函数名(类型1 参数名1,类型2 参数名2,…) //成员函数声明返回类型
函数名(类型1,类型2,…);
...
};
返回类型 类名::函数名(形式参数列表) //成员函数定义在类外部实现
{
函数体
}
ps:类定义一般放在程序文件开头或者放到头文件中被程序文件包含,此时这个定义是全局的。在全局作用域内,该定义处处可见,因此同作用域内的所有函汝都可以使用它。
类定义也可以放到函数内或局部作用域中,此时这个定义是局部的。若在函数内部有同名白类定义,则全局声明在该函数内部是无效的,有效的是局部定义为。
C++规定,在局部作用域中声明的类,成员函数必须是函数定义形也式,不能是原型声明。一般的,由于类是为整个程序服务的,因此很少有将类放到局部作用域去定义。
类定义向编译器声明了一种新的数据类型,该数据类型有不同类型的数据成员和成员函数。因此尽管数据成员类似变量的定义,但类型声明时并不会产生该成员的实体,即为它分配存储空间。
成员访问控制
对类的成员进行访问,来自两个访问源:类成员和类用户。
类成员指类本身的成员函数,类用户指类外部的使用者,包括全局类成员指类本身的成员函函数、另一个类的成员函数等。
无论数据成员还是函数成员类的每个成员都有访问控制属性,由以下三种访问标号说明:public(公有的)、private(私有的)和protected(保护的)
1 公有成员用public标号声明类成员和类用户都可以访问公有成员,任何一个来自类外部的类用户都必须通过公有成员来访问。显然,public实现了类的外部接口。
2 私有成员用private标号声明只有类成员可以访问私有成员,类用户的访问是不允许的。显然private实现了私有成员的隐蔽。
3 保护成员用protected标号明,在不考虑继承的情况下,protected的性质和private性质一致,但保护成员可以被派生类的类成员访问。
成员访问控制是C++的类和结构体又一个重要特性。加上访问标号,类定义更一般的形式为:
class 类名{ //类体
public: //公有访问权限
公有的数据成员和成员函数
protected: //保护访问权限
保护的数据成员和成员函数
private: //私有访问权限
私有的数据成员和成员函数
}
ps:如果没有声明访问控制属性,类所有成员默认为private,即私有的。
(1)在定义类时,声明为public、private或protected的成员的次序任意。
(2)在一个类体中不一定都包含public、private或protected部分,可以只有public、private、protected部分或任意组合。
(3)关键字public、private、protected可以分别出现多次,即一个类体可以包含多个public、private或protected部分。但更通用的做法是将相同访问控制属性的成员集中在一起来写
(4)实际编程中,为了使程序清晰,每一种成员访问限定符在类体中只出现一次,且按照public、protected、private顺序组织,形成访问权限层次分明的结构。
9.8
注:本笔记内容根据中国大学慕课-西北工业大学-魏英老师-C++程序设计课件汇总编写。