чтобы понять эту строку кода указателей C ++ - PullRequest
0 голосов
/ 09 июля 2020

Я читаю пример кода указателей, но не могу понять, почему разработчик пишет это:

Если DD - это класс, который мы определили, почему он работает?

DD *g = 0,h(ARGUMENTS_HERE);

но это не работает (без нуля)?

DD *g = h(ARGUMENTS_HERE);

Ответы [ 2 ]

8 голосов
/ 09 июля 2020

Учитывая минимальную предоставленную информацию, если бы мне пришлось угадывать, я бы сказал, что первая строка работает, потому что g определяется как указатель на DD и инициализируется как 0 или null. Послесловие через запятую означает, что h (с аргументами) определяется как функция (с аргументами), которая возвращает объект DD (не указатель на объект, а фактический объект)

Вторая строка не выполняется, потому что вы пытается инициализировать g возвращаемым значением функции h. Поскольку мы не знаем, как на самом деле определяется h, я бы предположил, что он либо не определен, либо определен, но не возвращает указатель на DD.

0 голосов
/ 09 июля 2020

Здесь вы объявляете две разные переменные, один указатель на объект DD и один объект DD. Во втором примере вы пытаетесь назначить h, который, вероятно, не существует или является объектом, который вы пытаетесь назначить указателю.

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