В C ++, ref-определители выражают форму подтипа? - PullRequest
0 голосов
/ 14 декабря 2018

С точки зрения теории языка программирования, в C ++ квалификаторы, такие как const и volatile, позволяют выражать форму подтипа, например, int является подтипом const int.

Мне было интересно, можем ли мы считать, что ref-квалификаторы & и && позволяют выражать форму подтипа или нет.Другими словами, можем ли мы считать, что T, T& и T&& связаны отношением подтипов или нет, с точки зрения теории языка программирования?И если да, то что это за отношения?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Хотя вы можете считать CV-квалификаторы «подтипами» в некоторых определениях, ссылки не являются.const T t = some_t; создает новый объект типа T, объявленный как const.Вы можете думать об этом как о создании нового const T, но в любом случае вы создаете новый объект, значение которого концептуально является копией существующего.

T &t = some_t; не создает новый объект.Создает ссылку на существующий объект.Это принципиально иная вещь в C ++.Ссылки не являются объектами;язык очень ясно об этом.И бесполезно думать о ссылке как о «подтипе».

0 голосов
/ 14 декабря 2018

int является подтипом const int

Ну, не очень понятно, о чем вы спрашиваете, но, похоже, все наоборот, так какдругие формы подтип int с использованием const или volatile добавят больше ограничений, чем исходный тип (значение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...