2014-02-09 2 views
0

Прежде всего, извините за мой английский.Объекты и значения в C++

В соответствии с С ++ 11 Стандарта на:

§ [Основной] .3: Объект представляет собой значение, объект, ссылки, функция, перечислитель, тип, член класса, шаблон, шаблон специализация, пространство имен, пакет параметров или это.

Разве это не каждое значение и объект? Например, nullptr идентифицирует «значение» типа nullptr_t, но, поскольку nullptr_t является скалярным типом, он также является типом объекта, и поэтому nullptr является объектом.

С this Я тот же спор: когда this используется в правильных ситуациях (в не-статических функций-членов или инициализаторах членов данных) является указателем prvalue и, следовательно, скаляр/тип объекта, и в результате объект.

Не так ли?

+1

'this' является ключевым словом. * Оценка * 'this' создает значение printerue указателя. –

+0

@KerrekSB Я видел этот вопрос, но в центре внимания вопрос другой, и не решает мой дубт. –

+0

@KerrekSB 'nullptr' и' true' также являются ключевыми словами и не отображаются в списке объектов, в отличие от 'this'. –

ответ

1

1,8/1 ... Объект представляет собой область хранения ...

nullptr является nullptr_t, что 1 является int - он называет значение типа, но не занимает места хранения и, следовательно, не является объектом.

Также нет this. Что делает отличным от nullptr_t или true является то, что вы не можете, взяв в изоляции, указать, какой тип это значение. Поэтому, чтобы описать его поведение в выражении, нужно рассмотреть контекст, в котором появляется указанное выражение. Это требует некоторой дополнительной гимнастики в стандартном тексте; по этой причине this специально вызывается в нескольких местах.

+0

Спасибо за вашу акробатию о 'this', но я думаю, что не очень хорошо ответил на мой вопрос. Я задам другой вопрос с другим фокусом. –

Смежные вопросы