原文: https://www.programiz.com/cpp-programming/object-class

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

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

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

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

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


C++ 类

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

类是对象的蓝图。

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

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


如何在 C++ 中定义一个类?

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

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

  1. class className
  2. {
  3. // some data
  4. // some functions
  5. };

示例:C++ 中的类

  1. class Test
  2. {
  3. private:
  4. int data1;
  5. float data2;
  6. public:
  7. void function1()
  8. { data1 = 2; }
  9. float function2()
  10. {
  11. data2 = 3.5;
  12. return data2;
  13. }
  14. };

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

此类具有两个数据成员:data1data2和两个成员函数:function1()function2()


关键字:privatepublic

在上面的示例中,您可能已经注意到两个关键字:privatepublic

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

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

在此,data1data2是私有成员,其中function1()function2()是公共成员。

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


C++ 对象

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

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


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

  1. className objectVariableName;

您可以如下创建Test类的对象(在上面的示例中定义):

  1. class Test
  2. {
  3. private:
  4. int data1;
  5. float data2;
  6. public:
  7. void function1()
  8. { data1 = 2; }
  9. float function2()
  10. {
  11. data2 = 3.5;
  12. return data2;
  13. }
  14. };
  15. int main()
  16. {
  17. Test o1, o2;
  18. }

在此,创建了test类的两个对象o1o2

在上述test中,data1data2是数据成员,并且function1()function2()是成员函数。


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

您可以使用来访问数据成员和成员函数。 (点)运算符。 例如,

  1. o2.function1();

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

同样,可以通过以下方式访问数据成员:

  1. o1.data2 = 5.5;

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

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


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

  1. // Program to illustrate the working of objects and class in C++ Programming
  2. #include <iostream>
  3. using namespace std;
  4. class Test
  5. {
  6. private:
  7. int data1;
  8. float data2;
  9. public:
  10. void insertIntegerData(int d)
  11. {
  12. data1 = d;
  13. cout << "Number: " << data1;
  14. }
  15. float insertFloatData()
  16. {
  17. cout << "\nEnter data: ";
  18. cin >> data2;
  19. return data2;
  20. }
  21. };
  22. int main()
  23. {
  24. Test o1, o2;
  25. float secondDataOfObject2;
  26. o1.insertIntegerData(12);
  27. secondDataOfObject2 = o2.insertFloatData();
  28. cout << "You entered " << secondDataOfObject2;
  29. return 0;
  30. }

输出

  1. Number: 12
  2. Enter data: 23.3
  3. You entered 23.3

在此程序中,在test类下定义了两个数据成员data1data2以及两个成员函数insertIntegerData()insertFloatData()

声明了同一类的两个对象o1o2

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

  1. o1.insertIntegerData(12);

这会将对象o1data1值设置为 12。

然后,调用对象o2insertFloatData()函数,并将该函数的返回值存储在变量secondDataOfObject2中:

  1. secondDataOfObject2 = o2.insertFloatData();

在该程序中,未使用o1data2o2data1

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