教授C语言的课本,名字叫做《面向过程的程序设计》,关注过程,分析出求解问题的步骤,通过函数调用来解决问题;C++则叫做《面向对象的程序设计》,更关注的是对象,将一件事拆分成为不同的对象,依靠对象之间的交互完成。
举一个例子,假设我们想要实现一个外卖系统。则有:
C语言(面向过程):解决的是下单,接单,配送这三个过程。
C++(面向对象):更加注重骑手,商家和客户三个类对象的相互关系。
一,类的引入
C语言的结构体中只可以定义变量;在C++中,结构体不仅可以定义变量,还可以定义函数。
并且结构体的定义,在C++中更喜欢用class来替代。
二,类的定义
class ClassName
{
//类体:由成员函数和成员变量组成
}; //类后面一定要有分号!!
1,相关使用规则
class是定义类的关键字,ClassName是类的名字。
类中的元素称为类的成员:类中的数据叫做成员变量,类中的函数成为成员函数;建议类中的成员变量前面加一个 " _ "。
成员函数的定义和声明如果都放在类体中,则可能会被编译器当作内联函数。
2,访问限定符
C++通过将对象的属性和方法结合在一起,让对象更加完善,通过访问权限将接口提供给外部的客户使用。
访问限定符有public,private,protected三类。
public修饰的成员在类外可以直接被访问。
private和protected修饰的的成员在类外不能直接被访问
访问权限作用域是从该访问限定符出现的位置开始直到下一个访问限定符出现时为止。
class的默认访问权限是private,struct是public。
Q:class与struct的区别?
Ans:由于C++要兼容C,所以C++中的struct即可以当成结构体使用,也可以定义类。
class的默认访问权限是private,struct是public。
3,封装
面向对象的三大特性:封装,继承,多态。
关于封装,可以简单理解成为:想给用户看到的就定义成为共有,不想给看到,就定义成为私有或保护。其是一种将数据和操作数据的方法结合起来,隐藏对象属性和实现细节,仅对外公开接口来和对象交互的方法。其本质是一种管理。
三,类的作用域
类定义了一个新的作用域,类的所有成员都在对应的作用域中。在类体外定义成员要使用作用域解析符(::)指明属于哪个类。
class Person
{
char _name[20];
int _age;
char _sex[7];
};
//类体外的要指明属于哪个类
void Person::PrintInformation
{
cout<<_name<<" "<<_age<<" "<<_sex<<endl;
}
四,类的实例化
用类创建对象的过程叫做类的实例化。
类犹如一个图纸。按照图纸,我们可以该处很多房子;同样的,按照类可以实例化出很多对象。
由于图纸不能住人,所以我们写出来的类是不能够存储数据的;但是房子可以住人,所以我们实例化出来的对象是可以进行初始化的。
//以下是一个用于定义人的类,包括名字,年龄和性别
class Person
{
char _name[20];
int _age;
char _sex[7];
};
int main()
{
//此时我们就依照Person类实例化除了一个对象Jack;
Person Jack;
//我们还可以按照类实例化出另外一些人
Person Mary;
Person Eric;
return 0;
}
本节小结: