Функционально в отношении того, что вы видите, это не разница. Оба будут делать то же самое.
Теперь не уверен, понимаете ли вы реальную разницу, если вы новичок в программировании, но тем не менее есть разница в коде сборки, который не имеет методов более высокого уровня или неглобальных переменных ,
Первый - встроенный, что означает, что в любом месте вы делаете Time timeObj
в коде сборки, вы фактически получите встроенный код. Что-то вроде того, что происходит внизу. Обратите внимание, что в вашем коде он не будет компилироваться.
Time timeObj;
timeObj.hours = 0;
timeObj.minutes = 0;
timeObj.seconds = 0;
В вашем примере это прекрасно, так как это просто. Однако в более сложных классах вы можете добавить несколько сотен строк в каждое место, где вы создаете новую версию этого объекта, что делает код намного дольше и более неэффективным.
Второй из них определяется как нестрочный, что означает, что каждый раз, когда вы создаете объект времени, код сборки перепрыгивает в другую точку кода, выполняет код и затем возвращается назад. Опять же, вы не можете сделать следующее, но это похоже на то, что происходит.
Time timeObj;
timeObj.Time();
Это очень простой способ объяснить это, и если это не имеет смысла, не относятся к себе с ней много еще тоже. В общем, встроенные определения хороши, если они представляют собой несколько строк простого кода, например, ваш. Но дольше, и это не должно быть реализовано как встроенная функция.
Кстати, вы можете сделать свой встроенный вариант даже лучше, выполнив следующие действия:
Time() { hours = minutes = seconds = 0; }
Почему вы ожидаете разницы? – Marcin