Cplusplus 简明教程
C++ Classes and Objects
C 编程的主要目的是为 C 编程语言添加面向对象,而类是支持面向对象编程的 C 语言的中央特征,通常称为用户自定义类型。
类用于指定对象的格式,它将数据表示和用于处理数据的函数合并到一个简洁的包中。类中的数据和函数称为该类的成员。
C++ Class Definitions
当你定义一个类时,你就定义了一个数据类型的蓝图。这实际上并不定义任何数据,但它确实定义了类名意味着什么,即类的对象将由什么组成,以及可以在这样的对象上执行什么操作。
类定义以关键字 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 ,我们将在小节中讨论它们。
Define C++ Objects
类为对象提供了蓝图,因此本质上对象是从类创建的。我们声明一个类的对象,其声明类型与声明基本类型的变量完全相同。下面的语句声明了 Box 类的两个对象 −
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
这两个对象 Box1 和 Box2 都将有自己数据成员的副本。
Accessing the Data Members
可以使用直接成员访问运算符 (.) 访问类对象的公共数据成员。让我们尝试以下示例以阐明问题 −
#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
需要注意的是,不能直接使用直接成员访问运算符 (.) 访问私有和受保护成员。我们将学习如何访问私有和受保护成员。
Classes and Objects in Detail
到目前为止,你已经对 C 类和对象有了非常基本的了解。与 C 类和对象相关的还有更有趣的概念,我们将在下面列出的各个小节中讨论它们 −
Sr.No |
Concept & Description |
1 |
Class Member Functions 类的成员函数是一个在类定义中拥有其定义或其原型的函数,就像任何其他变量一样。 |
2 |
Class Access Modifiers 类成员可以定义为 public、private 或 protected。默认情况下,成员将被假设为 private。 |
3 |
Constructor & Destructor 类构造函数是类中一个特殊的函数,当类的某个新对象创建时调用该函数。析构函数也是一个特殊函数,当创建的对象被删除时调用该函数。 |
4 |
Copy Constructor 拷贝构造函数是通过使用先前创建的同一类的对象初始化对象来创建对象的构造函数。 |
5 |
Friend Functions friend 函数允许完全访问类的私有和受保护成员。 |
6 |
Inline Functions 对于内联函数,编译器尝试使用对函数的调用来展开函数体中代码。 |
7 |
this Pointer 每个对象都有一个指向对象本身的特殊指针 this 。 |
8 |
Pointer to C++ Classes 指向类的指针的实现方式与指向结构的指针的实现方式完全相同。事实上,类实际上只是包含函数的结构。 |
9 |
Static Members of a Class 类的成员数据和成员函数都可以声明为静态的。 |