【C++私房菜】类和对象详解
温馨提示:这篇文章已超过429天没有更新,请注意相关的内容是否还可用!
目录
一、类与对象
1、类是什么
二、类和对象的基础知识
2.1 定义类:成员变量和成员函数
2.2 创建对象:实例化一个类的对象。
2.3对象的生命周期:构造函数和析构函数。
a. 构造函数
b. 析构函数
c.小结:
三、成员变量和成员函数
3.1、成员变量:类的静态成员
a. 声明静态成员
b. 定义静态成员
3.2、成员函数:成员函数的定义和使用
3.3、访问控制:public、private和protected关键字的使用
四、类的其他特性
4.1 对象中的this指针
4.2 拷贝与赋值:深拷贝与浅拷贝
4.3 友元关系
a. 友元函数
b. 友元类和友元成员函数
一、类与对象
1、类是什么
在 C++中,我们通过定义一个类(class)来定义自己的数据结构。一个类定义了一个类型,以及与其关联的一组操作。类机制是 C++最重要的特性之一。实际上,C++最初的一个设计焦点就是能定义使用上像内置类型一样自然的类类型(class type)。类是 C++中面向对象编程(OOP)的核心概念之一。
类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作。类之于对象就像类型之于变量。也就是说,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。换句话说,如果说类就好比所有编程语言,则对象就好比其中某个语言,如我们本文要描述的C++。我们来扩展这种类比,表示编程语言的类中包括该类可执行的操作的定义,如使用此编程语言我们可以实现的功能。如果了解其他 OOP 术语,就知道 C++类对应于某些语言中的对象类型,而 C++对象对应于对象实例或实例变量。
类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体。
二、类和对象的基础知识
2.1 定义类:成员变量和成员函数
类是一种将抽象转换为用户定义类型的 C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。下面来看一个表示股票的类。
首先,必须考虑如何表示股票。可以将一股作为基本单元,定义一个表示一股股票的类。然而,这意味着需要 100 个对象才能表示 100 股,这不现实。相反,可以将某人当前持有的某种股票作为一个基本单元,数据表示中包含他持有的股票数量。一种比较现实的方法是,必须记录最初购买价格和购买日期(用于计算纳税)等内容。另外,还必须管理诸如如拆股等事件。首次定义类就考虑这么多因素有些困难,因此我们对其进行简化。具体地说,应该将可执行的操作限制为:
-
获得股票;
-
增持;
-
卖出股票;
-
更新股票价格;
-
显示关于所持股票的信息。
可以根据上述清单定义 stock 类的公有接口。为支持该接口需要存储一些信息。
接下来定义类。一般来说,类规范由两个部分组成。类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口类。方法定义:描述如何实现类成员函数。简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现, 会发现 struct 中也可以定义函数。
简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。
class name { //....类体:由成员函数和成员变量组成 };// 一定要注意后面的分号其中class为定义类的关键字,name 为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。 类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
定义类有两种方式:
-
声明和定义全放在类体中。
-
声明在类内,定义在类外。如类声明置于.h文件中,成员函数放在.cpp中。
//1、声明和定义全放在类体中。 class Person { public: void show(){ cout -
