ссылка — В C ++, ref-квалификаторы выражают форму подтипа?

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

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

1

Решение

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

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

3

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

int будучи подтипом const int

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

0

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