ФлеймФорумПрограммирование

Насыпьте сложных вопросов по C++

Страницы: 1 2 39 10 Следующая »
#0
21:12, 19 мар 2024

Хочу подтянуть знания. Накидайте, плиз сложных вопросов по плюсам по темам конструкторов, копирования, виртуальности, умных указателей и исключений. Ссылки на хорошие quiz тесты приветствуются. Заранее спасибо!

#1
21:23, 19 мар 2024

Профессор ДиректИкс
Чтобы подтянуть нужен болт гайка ключ

#2
21:27, 19 мар 2024

найди ошибки:

struct Foo
{
  static auto getFoo() -> Foo { return Foo(); }
  void print() { std::cout << "Foo::print()" <<std::endl; }
};

void a()
{
  const auto& foo = Foo::getFoo();

  Foo* p_foo = &p_foo;
  p_foo->print();
}

auto b() -> const Foo*
{
  auto& foo = Foo::getFoo();

  return &foo;
}
#3
21:49, 19 мар 2024
Foo* p_foo = &p_foo;

Это странно само по себе. А так адрес указателя присваивается указателю.

auto& foo = Foo::getFoo();

lvalue-ссылка получает rvalue

#4
21:51, 19 мар 2024

Профессор ДиректИкс
> Хочу подтянуть знания.
Так ты их не подтянешь, почитай хорошую книгу по плюсам (не знаю что нынче в моде, не могу посоветовать) попрактикуйся, походи по собеседованиям.

Профессор ДиректИкс
> Накидайте, плиз сложных вопросов по плюсам
Да на здоровье, что в этом коде не так?
https://godbolt.org/z/faq4xoGTv

#5
21:59, 19 мар 2024

totoro
> Так ты их не подтянешь, почитай хорошую книгу по плюсам
Знать бы какую, какие-то растянутые примеры в книгах, где утомляешься быстрее, чем доходишь до сути темы

#6
22:01, 19 мар 2024

Профессор ДиректИкс
каждое видео +/- часик, на месяц другой хватит посмотреть
https://www.youtube.com/@CppCon/videos

#7
22:14, 19 мар 2024

Вот сложные вопросы по плюсам:

1. Как найти интересную работу на С++, если умеешь только проходить собесы и отвечать на хитрые вопросы про реинтерпткаст, сфинае и констексп?

2. Как удержаться от того, чтобы писать это дерьмо (которому ты научился для сдачи собесов), на этой интересной работе, вместо нормального рабочего кода?

3. Когда уже в С++ перестанут добавлять говносахар и расширять стандартную библиотеку, а сосредоточатся на полезном (рефлекшн например)?

4. Является ли существование auto злом, добром, добрым злым костылем, или костыльным злом?

#8
22:32, 19 мар 2024

Профессор ДиректИкс
> lvalue-ссылка получает rvalue

https://en.cppreference.com/w/cpp/language/implicit_conversion#Te… terialization

#9
22:39, 19 мар 2024

Dmitry_Milk
не константную ссылку так нельзя. Но можно в a() и тогда ссылка будет "удерживать" временный объект пока не выйдет из области видимости, после чего вызовется деструктор.
Профессор ДиректИкс
> Это странно само по себе. А так адрес указателя присваивается указателю.
хотел написать Foo* p_foo = &foo;
jaguard
> 4. Является ли существование auto злом, добром, добрым злым костылем, или костыльным злом?
добром, лямбды/рэнжи без неё были бы той еще болью. Да и подобные циклы:

for(const std::vector<Foo>::iterator it = vec.begin(); it != vec.end(); ++it)

забыли уже как писали?

#10
2:25, 20 мар 2024

Aroch
> забыли уже как писали?

for (int i = 0, n = vec.size(); i < n; i++)

А всем прочим стд-контейнерам, в сколько-нибудь оправданных в Ц++ случаях их использования, итерация не нужна.

#11
2:53, 20 мар 2024

Aroch
> найди ошибки:
Ехал auto через auto, видит auto auto auto. Оно?

#12
2:55, 20 мар 2024

Sbtrn. Devil
> А всем прочим стд-контейнерам, в сколько-нибудь оправданных в Ц++ случаях их использования, итерация не нужна.
теперь повесь фильтрацию, с пропуском первых двух элементов и последних 5, с группировкой по 4 штуки.
MrShoor
> Ехал auto через auto, видит auto auto auto. Оно?
нет.

#13
3:07, 20 мар 2024

Aroch
> нет.
Ну как же нет. У тебя написано:

static auto getFoo() -> Foo { return Foo(); }

А надо:

static Foo getFoo() { return Foo(); }

У тебя:

const auto& foo = Foo::getFoo();

А надо:

const Foo& foo = Foo::getFoo();

У тебя:

auto b() -> const Foo*

А надо:

const Foo* b()

У тебя:

auto& foo = Foo::getFoo();

А надо:

Foo& foo = Foo::getFoo();

И того твой код без auto выглядит так:

struct Foo
{
  static Foo getFoo() { return Foo(); }
  void print() { std::cout << "Foo::print()" <<std::endl; }
};

void a()
{
  const Foo& foo = Foo::getFoo();

  Foo* p_foo = &p_foo;
  p_foo->print();
}

const Foo* b()
{
  Foo& foo = Foo::getFoo();

  return &foo;
}

Тут конечно пакован ошибок, зато теперь их нормально видно.

#14
3:22, 20 мар 2024

MrShoor
> а надо
смешно. Вот тебе без авто оставил специально для тебя одну ошибку, но по скольку тут уже всё объяснялось выше, то внимательный читатель поймет что к чему, ты пришел когда уже всё разжевано но всё равно уперся в авто  https://godbolt.org/z/veqW73GK1

Страницы: 1 2 39 10 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.