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

Общие вопросы по программированию (3 стр)

Страницы: 1 2 3 4 51186 Следующая »
#30
(Правка: 15:50) 15:47, 18 ноя 2019

0iStalker
> Первые 2 варианта, как-то нехорошо пахнут ненужным копированием, на ровном
> месте... особенно, если конструктор копирования не определён явно.
Нет там ни копирования, ни присваивания. Это абсолютно синонимичные написания одного и того же (и я не говорю об оптимизациях, это на уровне языка так сделано). Можешь проверить.

Мне на ревью один умный коллега (без сарказма) это предъявил. А я порадовался, что знаю этот момент лучше него.

#31
16:13, 18 ноя 2019

0iStalker
> Первые 2 варианта, как-то нехорошо пахнут ненужным копированием, на ровном
> месте...
А это как-то нехорошо пахнет незнанием синтаксиса c++

#32
18:30, 18 ноя 2019

pahaa
> А это как-то нехорошо пахнет незнанием синтаксиса c++
>
>

Ой, ну всё...

#33
(Правка: 21:13) 20:54, 18 ноя 2019

Vlad2001_MFS
> Кто какой вариант выберет и почему?
кто-нить поясните за третий вариант! я не понимаю синтаксис

sf::Window window(sf::VideoMode(640, 480), "Tittle", sf::Style::Default);

между sf::Window и window оператора не хватает?! или что вообще.

так:

sf::Window window(sf::VideoMode mode, string title, sf::Style style=sf::Style::Default);

?


первые два варианта плохие, потому что класс перегружен лишним конструктором.

он innuendo лучше вариант.

#34
22:13, 18 ноя 2019

skalogryz
Третий вариант это

Class var(param1, param2);

т.е. объявление переменной совмещенное с конструктором.

#35
23:21, 18 ноя 2019

kipar
> т.е. объявление переменной совмещенное с конструктором.
хм... глобальная переменная?! хм...

#36
0:19, 19 ноя 2019

skalogryz
> хм... глобальная переменная?! хм...
https://en.cppreference.com/w/cpp/language/initialization

#37
3:41, 19 ноя 2019

Vlad2001_MFS
> Кто какой вариант выберет и почему?
Вариант с auto.
Сразу видно объявление переменной + можно совмещать с возвращаемыми значениями/кастами + меньше табуляции если вдруг надо выровнять:

auto x    = A();
auto y    = f();
auto z    = static_cast<A>(B());
auto wwww = new A();

А кто против авто - тот обычный дикарь и вообще болен на С головного мозга.
Это в принципе неизлечимо, можно сразу предлагать выпить йаду.

#38
6:33, 19 ноя 2019

Vlad2001_MFS
> Кто какой вариант выберет и почему?
вариант 2. потому что в первом варианте копирование кода, а в третьем — потенциальный https://en.wikipedia.org/wiki/Most_vexing_parse

#39
6:43, 19 ноя 2019

Suslik
Тут явно не тот случай, ибо циферы в VideoMode избавляют от неоднозначности.

#40
9:38, 19 ноя 2019

Есть код:

class Test
{
private:

  int* data;

public:

  Test() noexcept
  {
    data = new int[10];
  }
  
  ~Test() noexcept
  {
    delete[] data;
  }
  
  void Print() noexcept
  {
    printf("0x%x\n", data);
  }
};

Почему компилятор не ворнингует на кторе?
Ведь new может кинуть std::bad_alloc.
Какой тогда вообще толк от noexcept?

#41
10:01, 19 ноя 2019

nes
> Какой тогда вообще толк от noexcept?
https://en.cppreference.com/w/cpp/language/noexcept_spec

Note that a noexcept specification on a function is not a compile-time check; it is merely a method for a programmer to inform the compiler whether or not a function should throw exceptions. The compiler can use this information to enable certain optimizations on non-throwing functions as well as enable the noexcept operator, which can check at compile time if a particular expression is declared to throw any exceptions. For example, containers such as std::vector will move their elements if the elements' move constructor is noexcept, and copy otherwise (unless the copy constructor is not accessible, but a potentially throwing move constructor is, in which case the strong exception guarantee is waived).

#42
11:02, 19 ноя 2019

skalogryz
> он innuendo лучше вариант.

ну да, как эти товарищи будут юзать окно из разных участков кода

#43
11:42, 19 ноя 2019

innuendo
> ну да, как эти товарищи будут юзать окно из разных участков кода
точно так же, только без говнокода с синглтонами

#44
11:53, 19 ноя 2019

Suslik
> точно так же, только без говнокода с синглтонам

это типа чтобы только противоречить мне ? забавно

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