Классы и объекты С++
Классы и объекты C++
В этом руководстве мы узнаем об объектах и классах и о том, как их использовать в C++ с помощью примеров.
В предыдущих руководствах мы узнали о функциях и переменных. Иногда желательно разместить связанные функции и данные в одном месте, чтобы было логично и с ними было проще работать.
Предположим, нам нужно сохранить длину, ширину и высоту прямоугольной комнаты и вычислить ее площадь и объем.
Чтобы справиться с этой задачей, мы можем создать три переменные, скажем, length , ширина и высота вместе с функциями 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
.
Переменные длина , ширина и высота объявленные внутри класса, известны как члены данных. . И функции calculateArea()
и calculateVolume()
известны как функции-члены класса.
Объекты C++
Когда класс определен, определяется только спецификация объекта; память или хранилище не выделяются.
Чтобы использовать данные и функции доступа, определенные в классе, нам нужно создать объекты.
<час>Синтаксис для определения объекта в C++
className objectVariableName;
Мы можем создавать объекты Room
класс (определенный в приведенном выше примере) следующим образом:
// sample function
void sampleFunction() {
// create objects
Room room1, room2;
}
int main(){
// create objects
Room room3, room4;
}
Здесь два объекта room1 и комната2 из Room
класс создан в sampleFunction()
. Точно так же объекты room3 и room4 создаются в main()
.
Как видим, мы можем создавать объекты класса в любой функции программы. Мы также можем создавать объекты класса внутри самого класса или в других классах.
Кроме того, мы можем создать сколько угодно объектов из одного класса.
<час>Члены данных доступа C++ и функции-члены
Мы можем получить доступ к членам данных и функциям-членам класса, используя .
(точка) оператор. Например,
room2.calculateArea();
Это вызовет calculateArea()
функция внутри Room
класс для объекта room2 .
Точно так же к элементам данных можно получить доступ как:
room1.length = 5.5;
В этом случае он инициализирует length переменная room1 до 5.5
.
Пример 1. Объект и класс в программировании на C++
// Program to illustrate the working of
// objects and class in C++ Programming
#include <iostream>
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()
, мы присвоили значения length , ширина и высота с кодом:
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() { }
}
Вот, а и function1()
являются частными. Таким образом, к ним нельзя получить доступ извне класса.
С другой стороны, b и function2()
доступны из любой точки программы.
Чтобы узнать больше об общедоступных и закрытых ключевых словах, посетите наш учебник по модификаторам доступа к классам C++.
<час>Пример 2. Использование public и private в классе C++
// Program to illustrate the working of
// public and private in C++ Class
#include <iostream>
using namespace std;
class Room {
private:
double length;
double breadth;
double height;
public:
// function to initialize private variables
void initData(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.initData(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;
Вместо этого мы используем общедоступную функцию initData()
. для инициализации частных переменных через параметры функции double len
, double brth
и double hgt
.
Чтобы узнать больше об объектах и классах, посетите эти темы:
- Конструкторы C++
- Как передать и вернуть объект из функции?
Язык C
- Класс и объект С#
- Абстрактный класс и метод С#
- Частичный класс C# и частичный метод
- Запечатанный класс и метод С#
- Дружественные функции C++ и дружественные классы
- Шаблоны классов С++
- Java-класс и объекты
- Структуры и классы в C ++
- Разница между структурой и классом:объяснение на примере C++
- Классы хранения в C++