C++ 类和对象
C++编程的主要目的是为C编程语言添加面向对象的特性,类是C++的核心特性,支持面向对象编程,并且通常被称为用户定义的类型。
类用于指定对象的形式,它将数据表示和操作该数据的方法结合在一个整洁的包中。类中的数据和函数被称为类的成员。
C++类定义
当你定义一个类时,你定义了一个数据类型的蓝图。这实际上并不定义任何数据,但它确实定义了类名的含义,即类的对象将包含什么以及对这样的对象可以执行哪些操作。
类定义以关键字 class 开始,后跟类名;类体用一对花括号括起来。类定义必须后跟分号或声明列表。例如,我们使用关键字 class 定义了Box数据类型,如下所示 –
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
关键字 public 确定了紧随其后的类成员的访问属性。公共成员可以在类对象的范围内从类外部访问。您还可以将类的成员指定为 private 或 protected ,我们将在子节中讨论。
定义C++对象
类提供了对象的蓝图,所以基本上一个对象是从一个类创建的。我们用与声明基本类型变量相同的方式声明类的对象。下面的语句声明了两个Box类的对象。
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
Box1和Box2对象都将拥有自己的数据成员副本。
访问数据成员
可以使用直接成员访问运算符(.)访问类对象的公共数据成员。让我们尝试以下示例来澄清事情−
#include <iostream>
using namespace std;
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
int main() {
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
double volume = 0.0; // Store the volume of a box here
// box 1 specification
Box1.height = 5.0;
Box1.length = 6.0;
Box1.breadth = 7.0;
// box 2 specification
Box2.height = 10.0;
Box2.length = 12.0;
Box2.breadth = 13.0;
// volume of box 1
volume = Box1.height * Box1.length * Box1.breadth;
cout << "Volume of Box1 : " << volume <<endl;
// volume of box 2
volume = Box2.height * Box2.length * Box2.breadth;
cout << "Volume of Box2 : " << volume <<endl;
return 0;
}
当上面的代码被编译并执行时,它会产生以下结果:
Volume of Box1 : 210
Volume of Box2 : 1560
需要注意的是,私有和受保护的成员不能使用直接成员访问运算符(.)直接访问。我们将学习如何访问私有和受保护的成员。
详细介绍类和对象
到目前为止,您对C++类和对象有了基本的了解。与C++类和对象相关的更有趣的概念,我们将在下面列出的各个子章节中讨论。
序号 | 概念和描述 |
---|---|
1 | 类成员函数 类的成员函数是在类定义中定义或声明的像其他变量一样的函数。 |
2 | 类访问修饰符 类成员可以被定义为public、private或protected。默认情况下,成员被认为是私有的。 |
3 | 构造函数和析构函数 类的构造函数是在创建对象时调用的特殊函数。析构函数也是一个特殊函数,在删除对象时调用。 |
4 | 拷贝构造函数 拷贝构造函数是通过使用之前创建的同类对象来初始化一个对象的构造函数。 |
5 | 友元函数 友元 函数被允许完全访问类的私有和保护成员。 |
6 | 内联函数 使用内联函数时,编译器尝试在调用函数的位置将函数体的代码展开。 |
7 | this指针 每个对象都有一个特殊的指针 this ,它指向对象本身。 |
8 | 类的指针 类的指针和结构的指针的用法完全相同。实际上,类只是一个带有函数的结构。 |
9 | 类的静态成员 类的数据成员和函数成员都可以声明为静态的。 |