для разных классов?
Классы не доступны извне по умолчанию, поэтому, если вы сделали
class car{
string model;
string color;
int horsepower;
void check(int horsepower) {
if(horsepower>349)
{
cout << "this car has many horsepowers";
}
}
};
, тогда ничего в этой структуре не будет доступны снаружи класса. Но есть способ изменить то, к каким переменным и функциям можно обращаться извне с помощью модификаторов доступа .
Цель сделать функции и переменные недоступными вне объекта - защитить их от непреднамеренный вызов или изменение
Короткий ответ: ваш пример не очень эффективен для объектов. Я бы просто оставил функцию вне структуры в этом примере.
Цель классов и структур - поместить переменные и функции в один пакет. Пример, который у вас есть, не требует объекта. Основа проектирования объектов - имитировать c объекты реального мира, предоставляя им способности (функции) и свойства (переменные).
Функция check()
здесь не та, которую мы обычно находим в автомобилях. Вместо этого у автомобиля есть определенные свойства, такие как цвет, скорость и направление. Автомобиль также обладает такими способностями, как ускорение, разворот, поворот налево и поворот направо. С помощью этого мы можем создать автомобильный объект с этими свойствами (переменными) и способностями (функциями)
struct Car
{
int speed;
std::string color;
std::string direction;
Car() // As soon as the object is created, this function will be called and set speed to 0.
{
speed = 0;
}
void speedUp()
{
speed += 5;
}
void slowDown()
{
speed -= 5;
}
void stop()
{
speed = 0;
}
void reverse()
{
stop() // This will stop the car first
speed -= 2; // Move the car backwords
}
void turnLeft()
{
direction = "left";
}
void turnRight()
{
direction = "right";
}
};
Так что теперь вы можете создавать разные объекты одного класса \ структуры с разными скоростями, направлением и цветом.