std::unique_ptr<X> ptr;
Будет ли ptr == nullptr
возвращать true
для любого типа X
?
struct A {std::unique_ptr<X> ptr;}
A; A(); A{};
А в таких случаях для A.ptr
?
Стандарт явно говорит о конструкторе unique_ptr
по умолчанию:
2 Effects: Constructs a unique_ptr
object that owns nothing, value-initializing the stored pointer and
the stored deleter.
3 Postconditions: get() == nullptr
. get_deleter()
returns a reference to the stored deleter.
Так что да.
В качестве примера:
struct A {std::unique_ptr<char> ptr;};
int main(int argc, const char * argv[])
{
unique_ptr<int> x;
cout << (x == nullptr) << endl;
A a;
A b{};
cout << (a.ptr == nullptr) << endl;
cout << (b.ptr == nullptr) << endl;
}
@Harry уже описал, как ведёт себя конструктор по умолчанию для std::unique_ptr
. Я же хочу добавить, что типа, имеющего конструктор, совершенно не важно как вы будете определять переменную:
A a1;
A a2 = A();
A a3 = A{};
Во всех случаях будет вызван конструктор A
по умолчанию, который в данном случае вызовет конструктор std::unique_ptr
по умолчанию для члена ptr
.
Особое внимание можно уделить разве что записям вида:
A a4();
A a5{};
В случае a4
не будет создана никакого объекта, а будет всего лишь объявление функции с именем a4
, не принимающей аргументов и возвращающей тип A
. В случае a5
создастся объект, идентичный a1
, a2
, a3
.
Про a4
более подробно можно ознакомиться в вики: Most vexing parse.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не знаю как редактировать готовое скомпилированное приложениеБыл вариант из скомпилированных файлов сделать проект, но у меня ничего не получилось...
не могу переделать под динамический массив, чтобы из файла без проблем можно было любого размера текст использовать в программе ( удаляет...
При считывании потока из командной строки в переменную с помощью std::getline не дает ввести данные, перескакиваетКак можно считать строку с пробелами...