Можно ли таким образом объявить глобальный объектный класс?

Я не знаю почему, но этот код работает, что делает эту запись }r; и как это работает? можно ли таким образом объявить глобальный объектный класс?

#include <iostream>

class А
{
public:
А()
{
std::cout << "Hello World";
}
}r;

int main()
{

}

0

Решение

Это объявляет глобальную переменную с именем r это типа A,

Это так же, как

class A { ... };

A r;

int main() { ... }
2

Другие решения

можно ли таким образом объявить глобальный объектный класс?

Хм, да! В принципе, r есть глобальная переменная типа А, C ++ унаследовал от C определенный синтаксис, который позволяет объявлять переменные после определения класса / структуры. Вы часто можете видеть из C что-то вроде

struct vertex {
float x, y;
} my_vertex; // Declares a variable of type vertex

В C ++ struct такой же как class за исключением спецификатора доступа по умолчанию.

Вы могли бы задаться вопросом, для чего используется точка с запятой после определения класса. Так что в основном класс определяется как

class my_class {};

с фигурными скобками, сразу после точки с запятой объявляет без переменных.

Вы также можете объявить более одной переменной, разделив их запятыми.

class my_class {} x, y, z;
1

Создайте один экземпляр class A с именем r, Это почти так же, как doint int r; Который сделал бы глобальный int на этой позиции.

0

По вопросам рекламы [email protected]