Для первого случая :
mkvparser::EBMLHeader ebmlclass; //No () as it has nothing to be passed in
ebmlclass.parse(m_reader, pos)
Вы создаете mkvparser::EBMLHeader
объект, затем запускаете функцию-член mkvparser::EBMLHeader::parse(...)
для объекта ebmlclass
Для второго случая :
mkvparser::EBMLHeader().Parse(m_reader, pos)
Аналогичным образом вы создаете объект mkvparser::EBMLHeader
, однако затем объект запускается функцией-членом mkvparser::EBMLHeader::parse(...)
. Оба эффективно делают одно и то же. Однако один из них сохраняет объект ebmlclass
, который можно использовать позже.
Следовательно, первый случай лучше, чем если бы вам пришлось использовать ebmlclass
несколько раз, а второй случай лучше с точки зрения читаемость и "компактность" для одного случая.
Обратите внимание, что для второго случая, после его запуска, mkvparser::EBMLHeader
будет уничтожен как естьвыходит за рамки.