第二部分思维导图PDF下载C++程序设计 第二章 从结构到类的演变
![]()
2.1 结构的演化
- 2.1.1结构发生质的演变
-
- 函数与数据共存
- 通过C++的结构对象使用成员函数 结构对象.成员函数
- struct 结构名 { 数据成员 成员函数 };
- C++首先允许结构中可以定义函数,这些函数称为成员函数
- 类是从结构演变而来的,开始称为“带类的C”,这种演变就是让结构含有函数开始的。
-
- 封装性
- 如果在定义结构式,将数据成员使用private关键字定义,则产生封装性
- 没有使用private定义的成员函数,默认为public
-
- 2.1.2使用构造函数初始化结构的对象
- 构造函数专门用于初始化对象
- 构造函数名字一般等于类名,一般形式为 :构造函数名 对象名 (初始化参数)
2.2 从结构演变一个简单的类
其实,使用关键字class 代替 struct, 就是一个标准的类
2.3 面向过程与面向对象
C语言是典型的面向过程的一种语言,还是结构化程序设计语言,它的程序设计特点就是函数设计。相互隔离的程序设计方法就是模块化程序设计方法。
C++ 是混合型语言,可以使用C++编译器所提供的对象,也称呼为“带类的C”
世界万物皆对象
2.4 C++面向对象程序程序设计的特点
2.4.1 对象
- C++可使用对象名、属性和操作三要素来描述对象。一个对象由一组属性和对这组属性进行操作的成员函数构成。
2.4.2 抽象和类
- 抽象是从一种一般的观点看待事物的方法,即集中于事物的本质特征,而不是具体细节或具体实现。
- 类是具有相同的属性和操作的一组对象集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。
- 类的作用是定义对象,类给出了该类的全部对象的抽象定义,而对象则是符合这种定义的实体。
- C++中,每个操作是一个“成员函数”
2.4.3 封装
- 封装就是把对象的属性和操作结合成一个独立的系统单位,并尽可能的隐蔽对象的内部细节。在类中,封装是通过存取权限实现的,例如public和private
2.4.4 继承
- 继承是一个类可以获得另一个类的特性的机制。
2.4.5 多态性
- 不同的对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性。
2.5 使用类和对象
2.5.1 使用string对象
- 需包含头文件,#include
- string初始化时需要的是双引号括起来的字符串或字符常量,而不是单引号括起来的单个字符常量。
- 两种初始化方法,例如
- string str1(“We are here!”);
- string str1 = “We are here”;
- 对象使用自己的成员函数的方法时通过“.”运算符,如
- 对象名 . 成员函数
- string 可使用+ 运算符将两个字符串连接起来组成一个新的字符串,也可以与单个字符串常量相加。例如:
- str1 = str1 + ‘ ’ + str1;
2.5.2 使用string类的典型成员函数实例
- 对象调用成员函数的语法
- 对象名称.成员函数(参数(可供选择的消息内容))
- substr成员函数,用来返回字符串的子串,第一个参数是要截取字串在字符串的位置,第二个参数是截取的长度。如果长度大于字符串长度,自动截取到末尾。
- string str1 = str1.substr(3, 3);
- find成员函数用来在主串中检索所需字符串,有两个参数,格式为:对象名称.find(要查找的字符串,开始查找的位置) 返回值为查询内容在主串的位置。如果不给位置参数,默认参数位置为0.
- int i = str1.find(“are”, 2);
- int i = str1.find(“are”);
- getline从流cin中读出输入的一行给string 类的对象,例如
- srting InputLine;
- getline(cin, InputLine, ‘\n’);
- cout << "your input:" << InputLine << endl;
2.5.3 使用complex对象
- C++ 标准程序库提供complex类定义复数对象,须包含头文件
,复数需要两个初始值,实部和虚部。它是一个模板类。 - complex <数据类型> 对象名 (实部值,虚部值)
- complex
num1(2,3); - complex
num2(3.5, 4.5);
- complex
- complex的real和imag成员函数用来输出对象的实部和虚部的值,如
- cout << num2.real() << ',' << num2.imag() << endl;
- complex <数据类型> 对象名 (实部值,虚部值)
2.5.4 使用对象小结
- 标准库提供的类都是经过抽象,代表了一类对象,如果使用对象的成员函数,需要用”.“运算符。定义复数类时与数据成员的类型无关,当定义复数类的对象时才指定实部和虚部的数据类型。
- 类是抽象出一类事物的共同特征,模板则是归纳出不同的类型事物的共同操作。
2.6 string对象数组与泛型算法
第一章中的泛型算法同样适合string类,另不要混淆泛型算法的find函数和string本身的find成员函数混淆,前者说白了是指针,即内存位置搜索,后者为字符搜索。
swap成员函数,用来交换2个对象的属性
- str1.swap(str2)
- str2.swap(str1)
留言