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确定其后面的类的成员的访问属性。可以从类外部类对象范围内的任何位置访问公共成员。您还可以将类的成员指定为私有或受保护,我们将在小节中讨论。
定义 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 | 类访问修饰符
类成员可以定义为公共、私有或受保护。默认情况下,成员将被假定为私有。 |
3 | 构造函数和析构函数
类构造函数是类中的特殊函数,在创建类的新对象时调用它。析构函数也是一个特殊函数,在删除创建的对象时调用。 |
4 | 复制构造函数
复制构造函数是通过使用先前创建的同一类的对象进行初始化来创建对象的构造函数。 |
5 | 友元函数
友元函数可以完全访问类的私有成员和受保护成员。 |
6 | 内联函数
对于内联函数,编译器尝试扩展函数体中的代码来代替对函数的调用。 |
7 | 这个指针
每个对象都有一个特殊的指针this,它指向对象本身。 |
8 | 指向 C++ 类的指针
指向类的指针与指向结构的指针完全相同。事实上,类实际上只是一个包含函数的结构。 |
9 | 类的静态成员
类的数据成员和函数成员都可以声明为静态。 |