Я не знаю почему, но этот код работает, что делает эту запись }r;
и как это работает? можно ли таким образом объявить глобальный объектный класс?
#include <iostream>
class А
{
public:
А()
{
std::cout << "Hello World";
}
}r;
int main()
{
}
Это объявляет глобальную переменную с именем r
это типа A
,
Это так же, как
class A { ... };
A r;
int main() { ... }
можно ли таким образом объявить глобальный объектный класс?
Хм, да! В принципе, 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;
Создайте один экземпляр class A
с именем r
, Это почти так же, как doint int r;
Который сделал бы глобальный int на этой позиции.
может быть, это поможет вам лучше понять.
C ++: объявить глобальный класс и получить к нему доступ из других классов?
уш