Вызов конструктора включенного класса в конструкторе класса

0

В классе argList конструктор - это инструкция

args_[0] = fileName(argv[0]);

При поиске метода fileName(...) получается, что он должен быть конструктором класса fileName:

inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
: string(str)    //Construct as copy of character array.
{
    stripInvalid();    //Strip invalid characters from the given string.
}

Два вопроса:

  1. Это действительно конструктор класса fileName который вызывается?
  2. Не был ли конструктором fileName статическим, если он был вызван так?

Приветствие

Теги:
static
constructor

3 ответа

3
Лучший ответ
  1. Да - это действительно конструктор класса fileName - нет возвращаемого значения, а имя метода совпадает с именем класса.

  2. Это не вызов конструктора, но определение конструктора (я предполагаю :: что сбивает с толку вас):

    inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
    

    Это вызов конструктора:

    args_[0] = fileName(argv[0]);
    

    В C++ нет статического конструктора.

3

"1. Это действительно конструктор класса fileName, который вызывается?

Да. Вызывается конструктор, потому что ему args_ [0] присваивается новый экземпляр класса fileName.

"2. Не был ли конструктором fileName статическим, если он был вызван так?

Нет. Конструктор не может быть статическим. Это один из правильных способов построения объектов.

2

Это действительно конструктор класса fileName который вызывается?

Косвенно, да. Для класса T выражение T(args) создает временный объект и инициализирует его, вызывая подходящий конструктор для аргументов.

В этом случае этот конструктор соответствует типу аргумента, так что используется.

Разве конструктор fileName был статическим, если он был вызван так?

Нет, конструкторы не могут быть объявлены статическими. Они всегда могут использоваться для инициализации либо именованных переменных, либо временных, подобных этому, без специальных объявлений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню