Что означает дополнительное двоеточие в шаблонном классе. ClassName & lt; T, SIZE & gt; :: ClassName:

Что означает дополнительное «:» в этом определении функции?

template <class T, int SIZE>
class Buffer
{
public:
Buffer();
private:
int _num_items;
};

template <class T, int SIZE>
Buffer<T, SIZE>::Buffer() :
_num_items(0) //What does this line mean??
{
//Some additional code for constructor goes here.
}

Я бы искал это, но я понятия не имею, как называется эта практика. Я только начал изучать шаблоны и столкнулся с этим в шаблонном классе.

0

Решение

Вот как вы можете инициализировать переменные-члены (и вы должны это сделать)

class Something
{
private:
int aValue;
AnotherThing *aPointer;

public:
Something()
: aValue(5), aPointer(0)
{
printf(aValue); // prints 5
if(aPointer == 0) // will be 0 here
aPointer = new AnotherThing ();
}
}

Это список инициализации — члены будут инициализированы с заданным значением.

2

Другие решения

Других решений пока нет …