# C++ 类和对象

> 原文： [https://www.programiz.com/cpp-programming/object-class](https://www.programiz.com/cpp-programming/object-class)

#### 在本文中，您将学习在 C++ 编程中使用对象和类。

C++ 是一种多范式编程语言。 意思是说，它支持不同的编程风格。

解决编程问题的一种流行方法是创建对象，即所谓的面向对象编程风格。

C++ 支持面向对象（OO）的编程风格，该风格允许您通过创建对象将复杂的问题分成较小的集合。

对象只是数据的集合和作用于这些数据的函数。

* * *

## C++ 类

在 C++ 中创建对象之前，需要定义一个类。

类是对象的蓝图。

我们可以将类视为房子的草图（原型）。 它包含有关地板，门，窗户等的所有详细信息。基于这些描述，我们建造了房屋。 房子是对象。

由于可以用相同的描述制作许多房屋，因此我们可以根据一个类创建许多对象。

* * *

### 如何在 C++ 中定义一个类？

使用关键字`class`在 C++ 中定义一个类，后跟类名。

类的主体在大括号内定义，并在末尾以分号结束。

```cpp
class className
   {
   // some data
   // some functions
   };
```

* * *

### 示例：C++ 中的类

```cpp
class Test
{
    private:
        int data1;
        float data2;  

    public:  
        void function1()
        {   data1 = 2;  } 

        float function2()
        { 
            data2 = 3.5;
            return data2;
        }
   };
```

在这里，我们定义了一个名为`Test`的类。

此类具有两个数据成员：`data1`和`data2`和两个成员函数：`function1()`和`function2()`。

* * *

### 关键字：`private`和`public`

在上面的示例中，您可能已经注意到两个关键字：`private`和`public`。

`private`关键字使数据和函数变为私有。 只能从同一类内部访问私有数据和函数。

`public`关键字将数据和功能公开。 公共数据和功能可以在类之外访问。

在此，`data1`和`data2`是私有成员，其中`function1()`和`function2()`是公共成员。

如果尝试从类外部访问私有数据，则编译器将引发错误。 OOP 中的此功能称为数据隐藏。

* * *

## C++ 对象

定义类时，仅定义对象的规范； 没有分配内存或存储空间。

要使用该类中定义的数据和访问功能，您需要创建对象。

* * *

### 在 C++ 中定义对象的语法

```cpp
className objectVariableName;
```

您可以如下创建`Test`类的对象（在上面的示例中定义）：

```cpp
 class Test
{
    private:
        int data1;
        float data2;  

    public:  
        void function1()
        {   data1 = 2;  } 

        float function2()
        { 
            data2 = 3.5;
            return data2;
        }
   };

int main()
{
    Test o1, o2;
} 
```

在此，创建了`test`类的两个对象`o1`和`o2`。

在上述`test`中，`data1`和`data2`是数据成员，并且`function1()`和`function2()`是成员函数。

* * *

### 如何在 C++ 中访问数据成员和成员函数？

您可以使用来访问数据成员和成员函数。 （点）运算符。 例如，

```cpp
o2.function1();
```

这将在`Test`类中为对象`o2`调用`function1()`函数。

同样，可以通过以下方式访问数据成员：

```cpp
o1.data2 = 5.5;
```

重要的是要注意，只能从类内部访问私有成员。

因此，您可以在以上示例中的任何函数或类中使用`o2.function1();`。 但是，代码`o1.data2 = 5.5;`应该始终位于类`Test`中。

* * *

### 示例：C++ 编程中的对象和类

```cpp
// Program to illustrate the working of objects and class in C++ Programming
#include <iostream>
using namespace std;

class Test
{
    private:
        int data1;
        float data2;

    public:

       void insertIntegerData(int d)
       {
          data1 = d;
          cout << "Number: " << data1;
        }

       float insertFloatData()
       {
           cout << "\nEnter data: ";
           cin >> data2;
           return data2;
        }
};

 int main()
 {
      Test o1, o2;
      float secondDataOfObject2;

      o1.insertIntegerData(12);
      secondDataOfObject2 = o2.insertFloatData();

      cout << "You entered " << secondDataOfObject2;
      return 0;
 } 
```

**输出**

```cpp
Number: 12
Enter data: 23.3
You entered 23.3
```

在此程序中，在`test`类下定义了两个数据成员`data1`和`data2`以及两个成员函数`insertIntegerData()`和`insertFloatData()`。

声明了同一类的两个对象`o1`和`o2`。

使用以下命令为`o1`对象调用`insertIntegerData()`函数：

```cpp
o1.insertIntegerData(12);
```

这会将对象`o1`的`data1`值设置为 12。

然后，调用对象`o2`的`insertFloatData()`函数，并将该函数的返回值存储在变量`secondDataOfObject2`中：

```cpp
secondDataOfObject2 = o2.insertFloatData();
```

在该程序中，未使用`o1`的`data2`和`o2`的`data1`。

您还应该检查以下主题，以了解有关对象和类的更多信息：

*   [C++ 构造器](/cpp-programming/constructors "C++ constructors")
*   [如何从函数传递和返回对象？](/cpp-programming/pass-return-object-function)