📜  C++类和对象

📅  最后修改于: 2020-09-25 05:01:51             🧑  作者: Mango

在本教程中,我们将在示例的帮助下了解对象和类以及如何在C++中使用它们。

在以前的教程中,我们了解了函数和变量。有时,最好将相关功能和数据放在一个地方,以便合乎逻辑且易于使用。

假设我们需要存储矩形房间的长度,宽度和高度,并计算其面积和体积。

为了处理此任务,我们可以创建三个变量,分别是lengthbreadthbreadth以及height和函数calculateArea()calculateVolume()

但是,在C++中,除了创建单独的变量和函数,我们还可以将这些相关的数据和函数包装在一个地方(通过创建对象 )。这种编程范例称为面向对象编程。

但是在创建对象并在C++中使用它们之前,我们首先需要了解

C++类

类是对象的蓝图。

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

建立课程

在C++中,使用关键字class及其后的类的名称定义了一个类。

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

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

例如,

class Room {
    public:
        double length;
        double breadth;
        double height;   

        double calculateArea(){   
            return length * breadth;
        }

        double calculateVolume(){   
            return length * breadth * height;
        }

};

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

在类内部声明的变量lengthbreadthheight被称为数据成员 。并且,函数calculateArea()calculateVolume()被称为类的成员函数

C++对象

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

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

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

className objectVariableName;

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

// sample function
void sampleFunction() {
    // create objects
    Room room1, room2;
}

int main(){
    // create objects 
    Room room3, room4;
}

在这里,两个物体room1room2中的Room类中创建sampleFunction()类似地,对象room3room4main()中创建。

如我们所见,我们可以在程序的任何函数中创建类的对象。我们还可以在类本身或其他类中创建类的对象。

同样,我们可以从一个类中创建任意数量的对象。

C++访问数据成员和成员函数

我们可以使用来访问类的数据成员和成员函数. (点) 运算符。例如,

room2.calculateArea();

这将在Room类中为对象room2调用calculateArea() 函数 。

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

room1.length = 5.5;

在这种情况下,它将把room1length变量初始化为5.5

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

// Program to illustrate the working of
// objects and class in C++ Programming

#include 
using namespace std;

// create a class
class Room {

   public:
    double length;
    double breadth;
    double height;

    double calculateArea() {
        return length * breadth;
    }

    double calculateVolume() {
        return length * breadth * height;
    }
};

int main() {

    // create object of Room class
    Room room1;

    // assign values to data members
    room1.length = 42.5;
    room1.breadth = 30.8;
    room1.height = 19.2;

    // calculate and display the area and volume of the room
    cout << "Area of Room =  " << room1.calculateArea() << endl;
    cout << "Volume of Room =  " << room1.calculateVolume() << endl;

    return 0;
}

输出

Area of Room =  1309
Volume of Room =  25132.8

在此程序中,我们使用Room类及其对象room1来计算房间的面积和体积。

main() ,我们使用以下代码分配了lengthbreadthheight的值:

room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;

然后,我们调用函数calculateArea()calculateVolume()来执行必要的计算。

注意在程序中使用关键字public 。这意味着成员是公开的,并且可以从程序的任何位置访问。

根据我们的需求,我们还可以使用private关键字创建私人成员。班级的私人成员只能从班级内部访问。例如,

class Test {

private:

 

int a;
    void function1() { }

public:
    int b;
    void function2() { }
}

Here, a and function1() are private and are. Thus they cannot be accessed from outside the class.

另一方面,可以从程序中的任何位置访问bfunction2()

要了解有关公共和私有关键字的更多信息,请访问我们的C++类访问修饰符教程。

示例2:在C++类中使用public和private

// Program to illustrate the working of
// public and private in C++ Class

#include 
using namespace std;

class Room {

   private:
    double length;
    double breadth;
    double height;

   public:

    // function to initialize private variables
    void getData(double len, double brth, double hgt) {
        length = len;
        breadth = brth;
        height = hgt;
    }

    double calculateArea() {
        return length * breadth;
    }

    double calculateVolume() {
        return length * breadth * height;
    }
};

int main() {

    // create object of Room class
    Room room1;

    // pass the values of private variables as arguments
    room1.getData(42.5, 30.8, 19.2);

    cout << "Area of Room =  " << room1.calculateArea() << endl;
    cout << "Volume of Room =  " << room1.calculateVolume() << endl;

    return 0;
}

输出

Area of Room =  1309
Volume of Room =  25132.8

上面的示例与第一个示例几乎相同,除了类变量现在是私有的。

由于变量现在是私有的,因此我们不能直接从main()访问它们。因此,使用以下代码将无效:

// invalid code
obj.length = 42.5;
obj.breadth = 30.8;
obj.height = 19.2;

相反,我们使用公共函数 getData()通过函数参数double lendouble brthdouble hgt初始化私有变量。

要了解有关对象和类的更多信息,请访问以下主题: