Аргументы к переменным во время определения - PullRequest
0 голосов
/ 03 сентября 2018

Я программист на Си, который пытается сделать маленькие шаги в C ++ и объектно-ориентированном программировании. Я столкнулся со следующим синтаксисом и не смог полностью обдумать его - почему у переменной здесь есть аргументы при ее определении?

unique_ptr<int> myvar(new int);

Я понимаю, что unique_ptr принимает необработанный указатель в качестве аргумента для своего конструктора, но каково обоснование этого синтаксиса? Это синтаксис, введенный позже, чем C ++ 98?

EDIT:

Что меня особенно смущает, так это наличие скобок, следующих сразу за новым именем переменной. Для меня - это то, как функции объявлены. Сначала я думал, что код объявляет функцию с именем myvar, но я знал, что это, вероятно, неправильно.

Чем это отличается от синтаксиса, подобного C или C ++ 98? Есть ли название для этого типа синтаксиса?

1 Ответ

0 голосов
/ 03 сентября 2018

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

int a(1); // a == 1

в чем смысл этого синтаксиса?

Не знаю, но если бы мне пришлось угадывать, это потому, что это похоже на вызов конструктора 1 .

struct X {
    X(int); // looks like a function
};

X x(10); // looks like a call to the constructor

1 : Выглядит как. Вы не можете вызвать конструктор.

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