C++学习记录(一):面向对象编程 | 您所在的位置:网站首页 › eve启航手册升级 › C++学习记录(一):面向对象编程 |
参考书籍:21天学通C++
学习内容:
什么是类类如何帮助整合数据和处理数据的方法(类似于函数)构造函数、复制构造函数和析构函数C++11如何通过移动构造函数改进性能封装和抽象等面向对象的概念this指针结构是什么,它与类有何不同。
1. 类和对象
假设一个模拟人的程序。人有其特征:姓名、出生日期、出生地和性别,还能做某些事情,如交谈、自我介绍。前述特征是有关人的数据,而能做的事情是方法。如下图; 所以要模拟人,需要一个结构,将 定义人的属性(数据)以及人可使用这些属相执行的操作(类似于函数的方法)整合在一起,这种结果就是类。 1.1.1 声明类声明类,用关键字class,一次包含类名、一组放在{}内的的成员属性和成员方法以及结尾的分号。声明类类似于函数声明,将类本身及其属性告诉编译器。类的声明本身并不改变程序的行为(除非你将类实例化成对象然后用它,就像调用函数一样)。 模拟人类的类如下L: class Human { string Name; string DateOfBirth; string PlaceOfBirth; string Gender;void Talk(string TextToTalk); void IntroduceSelf(); //...etc. };其中,IntroduceSelf()将使用Talk()以及整个类Human中的乙烯二数据。通过关键字class,C++提供了一种功能强大的方式,让您能够创建自己的数据类型,并在其中封装属性和使用他们的函数。类的所有属性(这里是Name、DateOfBrith、PlaceOfBirth和Gender)以及在其中声明的函数(Talk()和IntroduceSelf())都是类(Human)的成员. 封装指的是将数据及使用他们的方法进行逻辑编组,这是面向对象编程的重要特征。方法就是类成员的函数。 1.1.2 实例化对象类相当于蓝图,仅声明类并不会对程序产生影响(上面也说了)。在运行阶段,对象时类的化身。要使用类的功能,通常需要根据类实例化一个对象,并通过对象访问成员方法和属性。实例化Human对象与创建其他类型(如double)的实例类似: double Pi = 3.1415; Human Tom;就像为int动态分配内存一样,也可以使用new为Human对象动态地分配内存: int* pNumber = new int; delete pNumber; Human* pAnotherHuman = new Human(); delete pAnotherHuman;注意给类new动态分配内存时,类名后面需要加上小括号。 1.1.3 使用句点运算符访问成员一个人的例子是Tom,男性,1970年出生于南极。Tom是Human类的实例化对象,是这个类存在于现实世界(运行阶段)的化身: Human Tom;类声明表示,Tom有DateOfBirth等属性,可以用句点运算符(.)来访问: Tom.DateOfBirth = "1970";这是因为从类声明表示的蓝图克制,属性DateOfBirth是Human的一部分。仅当实例化了一个对象之后,这个属性在显示世界(运行阶段)才存在。句点运算符(.)用于访问对象的属性。 这也适用于IntroduceSelf()等方法: Tom.IntroduceSelf();如果有一个指针pTom,它指向Human类的一个实例,则可使用指针运算符(->)来访问成员函数,也可以使用简介运算符(*)来获取对象,再使用句点运算符来访问成员: Human* pTom = new Human(); (*pTom).IntroduceSelf(); 1.1.4 使用指针运算符(->)访问成员如果对象是使用new在自由存储区中实例化的,或者有指向对象的指针,则可以使用指针运算符(->)来访问成员属性和方法; Human* pTom = new Human(); pTom->DateOfBirth = "1970"; pTom->IntroduceSelf(); delete pTom;//或者下面的形式Human Tom; Human* pTom = &Tom; pTom->DateOfBirth = "1970"; pTom->IntroduceSelf();下面这个程序也是Human类,使用了关键private和public。 #include #include using namespace std;class Human { private: string Name; int Age;public: void SetName(string HumanName) { Name =HumanName; }void SetAge(int HumanAge) { Age = HumanAge; }void IntroduceSelf() { cout |
CopyRight 2018-2019 实验室设备网 版权所有 |