Я новичок в С++. Я видел несколько раз, когда объект создавался как:
class_name object_name();
и после этого вы можете обращаться к object_name как к объекту класса. Как я могу сделать это в своем классе? Должен ли я переопределить конструктор? И как это сделать?
Я думаю, вам нужно показать нам немного больше того, что вы имеете в виду, чтобы мы предложили ответ или даже много полезного комментария.
Где вы видели определение переменной в виде ifstream in();
?
Вы никогда не видели объект, созданный таким образом. Я бы порекомендовал вам начать здесь.
Вполне может быть, что ваш учебник слишком древний.
Эта строка кода, вероятно, может вызвать неприятное (но не "самый неприятный") поведение синтаксического анализа: вместо того, чтобы интерпретироваться как объявление переменной, она будет интерпретироваться как объявление функции с именем object_name
, не принимающей параметров и возвращающей значение типа class_name
.
Посмотрите, как это происходит на Богболт: компилятор говорит вам:
<source>: In function 'void foo()':
<source>:4:27: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
4 | class_name object_name();
|
@PeteBecker: Ты прав. Это просто досадный разбор.
Это создает функцию, а не объект.