C++学习记录(一):面向对象编程 您所在的位置:网站首页 eve启航手册升级 C++学习记录(一):面向对象编程

C++学习记录(一):面向对象编程

2023-04-07 11:27| 来源: 网络整理| 查看: 265

参考书籍: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 实验室设备网 版权所有