В этом руководстве мы узнаем об объектах и классах и о том, как их использовать в C ++, с помощью примеров.
В предыдущих уроках мы узнали о функциях и переменных. Иногда желательно разместить связанные функции и данные в одном месте, чтобы было логично и с ними было легче работать.
Предположим, нам нужно сохранить длину, ширину и высоту прямоугольной комнаты и вычислить ее площадь и объем.
Чтобы справиться с этой задачей, мы можем создать три переменные, например длину, ширину и высоту, а также функции 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
.
Переменные length, width и height, объявленные внутри класса, называются членами данных . И функции calculateArea()
и calculateVolume()
известны как функции-члены класса.
Объекты C ++
Когда класс определен, определяется только спецификация для объекта; память или хранилище не выделяются.
Чтобы использовать данные и функции доступа, определенные в классе, нам нужно создать объекты.
Синтаксис для определения объекта в C ++
className objectVariableName;
Мы можем создавать объекты Room
класса (определенные в приведенном выше примере) следующим образом:
// sample function void sampleFunction() ( // create objects Room room1, room2; ) int main()( // create objects Room room3, room4; )
Здесь создаются два объекта Room
класса room1 и room2 sampleFunction()
. Аналогичным образом создаются объекты room3 и room4 main()
.
Как видим, мы можем создавать объекты класса в любой функции программы. Мы также можем создавать объекты класса внутри самого класса или в других классах.
Кроме того, мы можем создать столько объектов, сколько захотим, из одного класса.
Члены данных доступа C ++ и функции-члены
Мы можем получить доступ к элементам данных и функциям-членам класса с помощью оператора .
(точка). Например,
room2.calculateArea();
Это вызовет calculateArea()
функцию внутри Room
класса для объекта room2.
Точно так же к элементам данных можно обращаться как:
room1.length = 5.5;
В этом случае он инициализирует переменную длины room1 как 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; )
Вывод
Площадь помещения = 1309 Объем помещения = 25132,8
В этой программе мы использовали Room
класс и его объект room1 для вычисления площади и объема комнаты.
В main()
, мы присвоили значения длины, ширины и высоты с помощью кода:
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.
С другой стороны, b и function2()
доступны из любой точки программы.
Чтобы узнать больше об открытых и закрытых ключевых словах, посетите наш учебник по модификаторам доступа к классам C ++.
Пример 2: Использование общедоступного и частного в классе C ++
// 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; )
Вывод
Площадь помещения = 1309 Объем помещения = 25132,8
Приведенный выше пример почти идентичен первому примеру, за исключением того, что переменные класса теперь частные.
Поскольку переменные теперь частные, мы не можем получить к ним доступ напрямую из main()
. Следовательно, использование следующего кода было бы недопустимым:
// invalid code obj.length = 42.5; obj.breadth = 30.8; obj.height = 19.2;
Вместо этого мы используем публичную функцию getData()
для инициализации приватных переменных с помощью параметров функции double len
, double brth
и double hgt
.
Чтобы узнать больше об объектах и классах, посетите эти темы:
- Конструкторы C ++
- Как передать и вернуть объект из функции?