第01讲 从结构到类的演变
2.1 结构的演化
2.1.1 结构发生质的演变
函数与数据共存
C++允许结构中定义函数,成为成员函数
在结构中同时定义成员变量与成员函数
使用格式:
结构对象.成员变量
结构对象.成员函数
1.函数与数据共存——结构的定义
struct point
{
double x,y;
void Setxy(double a, double b)
{ x=a; y=b;}
void Display()
{ cout <
运行结果
·主函数
·完整程序
修改后的程序
2 封装性
·若定义结构体时,使用了private关键字,则产生封装性
·使用了private关键字,则产生封装性
·在定义结构时,若使用了private则产生封装性,表示成员为私有的,只能在结构体内部通过公有成员函数使用。若未添加private则表示默认为public。
·类定义时默认为private
2.1.2 使用构造函数初始化结构的对象
·在定义结构时,与结构同名的函数称为构造函数。
·若定义的函数与某个已定义函数重名而参数类型或个数不同,则称为函数重载。
问题:哪个函数是构造函数?哪个函数被重载了?
注:构造函数在定义结构体对象时自动执行,
并根据是否初始化来自动选择所调用的构造函数
2.1.2 使用构造函数初始化结构的
2.2 从结构演化成一个简单的类
将程序中struct替换为class即变为类的标准定义形式
类图的表示
2.3 面向过程和面向对象
简单了解对象的含义
·面向过程 的求解步骤
·给出三角形三个顶点坐标,计算三边长,并输出
·步骤:输入x1,y1,x2,y2,x3,y3 六个数据
·计算(x1,y1)和(x2,y2)距离
·计算(x1,y1)和(x3,y3)距离
·计算(x2,y2)和(x3,y3)距离
·输出三个距离
设计类
将点设计为一个类,并提供
相关的属性和操作
定义对象同时给出坐标
point A(x1,y1)
point B(x2,y2)
point C(x3,y3)
计算距离并输出
AB=A.GetLength(B);
AC=A.GetLength(C);
BC=B.GetLength(C);
计算距离并输出
AB=A.GetLength(B);
AC=A.GetLength(C);
BC=B.GetLength(C);
2.4 C++面向对象程序设计特点
2.4.1 对象
2.5 使用类和对象
2.5.1 使用string对象
该类是C++语言中的内部预定义类,要在程序中使用该类时必须添加头文件
#inculude
类的初始化:string str1 =“A”;
string str1 =‘A’;
string str1 =‘AB’;
string str1 =“AB”;
可以以数组的形式使用str1对象中的字符串
类的初始化:string str1 (“hello,”);
string str2 =“world”;
可以以数组的形式使用str1对象中的字符串
str1[0]的值是h
str2[0]的值是w
运行结果
string对象允许使用 + 运算
对象的方法(操作/成员函数):
对象名.成员函数
str1.size()
String对象可使用+运算
Str1=str2+str3
若str2=“hello,” str3=“everyone”
则str1的结果是?
2.5.2使用string对象的成员函数
成员函数使用格式:对象名.成员函数
例如:str1.size()
若Str1=“everyone!”
Str1.size()值为:9
成员函数使用格式:对象名.成员函数
例如:str1.substr()
若Str1=“everyone”
Str1.substr(5,3)值为:“one”
C++中字符串中字符位置计数从0开始
成员函数使用格式:对象名.成员函数
例如:str1.substr()
C++中字符串中字符位置计数从0开始
成员函数使用格式:对象名.成员函数
例如:str1.find(要查找的字符串,开始位置)
结果为子串的位置
子串(one)的位置是5
Press any key to continue
getline函数的使用
功能:利用cin函数输入一行字符串存入对象
Hello
Str1的值是 hello
Press any key to continue
getline函数的使用
功能:利用cin函数输入一行字符串存入对象
例如:getline(cin,str1,’\n’)
Hello,everyoneR
Str1的值是 hello,.everyone
Press any key to continue
简单应用:日期格式转换
请输入日期<形如4-25,2002>:
4-25.2008
转换前的日期为4-25,2008
转换后的日期为 2008-4-25
Press any key to continue
2.5.3使用complex对象
complex类用于定义一个复数对象
使用时添加头文件#include
定义格式:complex
2.5.4使用对象小结
使用标准类库中的类时,须添加头文件。
使用string对象添加string头文件。
添加头文件
#include
并使用标准命名空间
using namespace std;
使用标准类库中的类时,须添加头文件。
定义对象方式同变量定义方式。
定义对象时可对对象进行初始化。
int i;
string str1;
定义时初始化:
int i=1;或 int i(1);
string str1=“hello”; 或 string str1(“hello”);
使用标准类库中的类时,须添加头文件。
定义对象方式同变量定义方式。
同类的不同对象由对象名和属性来区分。具有相同的成员函数。
string str1=“hello”;
string str2(“everyone”);
Cout<< str1.size()<
Complex num1(1,2);
String str1(“hello”);
Cout<
定义对象方式同变量定义方式。
定义对象时可对对象进行初始化。
同类的不同对象由对象属性来区分。
不同类对象具有不同的成员函数可实现不同操作。
类是具有相同特征和操作的对象的抽象。