Конструкторы с параметрами по умолчанию в Заголовочных файлах

Я сделал это оба пути - Вы получаете намного лучшие результаты с Возможностью 2.

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

Вы хотели бы изучить Возможный 1, если (1) можно ограничить цвета и используемые яркости и (2) Вы выполняете вычисление много в рендеринге.

для Генерации фона для UI не будут нужны очень много вычислений штриховки, таким образом, я предложу Возможные 2.

- Al.

27
задан royvandewater 17 September 2009 в 17:27
поделиться

4 ответа

.h:

class Foo {
    int x, y;
    Foo(int a, int b=0);
};

.cc:

#include "foo.h"

Foo::Foo(int a,int b)
    : x(a), y(b) { }

Вы только добавляете значения по умолчанию в объявление, но не в реализацию.

57
ответ дан 28 November 2019 в 04:22
поделиться

Заголовочный файл должен иметь параметры по умолчанию, cpp не должен.

test.h:

class Test
{
public:
    Test(int a, int b = 0);
    int m_a, m_b;
}

test.cpp:

Test::Test(int a, int b)
  : m_a(a), m_b(b)
{

}

main.cpp:

#include "test.h"

int main(int argc, char**argv)
{
  Test t1(3, 0);
  Test t2(3);
  //....t1 and t2 are the same....

  return 0;
}
9
ответ дан 28 November 2019 в 04:22
поделиться

Параметр по умолчанию должен быть записан в файл заголовка.

Foo(int a, int b = 0);

В cpp при определении метода вы не можете указать параметр по умолчанию. Однако я сохраняю значение по умолчанию в закомментированном коде, чтобы его было легко запомнить.

Foo::Foo(int a, int b /* = 0 */)
8
ответ дан 28 November 2019 в 04:22
поделиться

Вам необходимо поместить аргументы по умолчанию в заголовок, а не в файл .cpp.

5
ответ дан 28 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: