У меня есть код. Пробовал найти в интернете, но не все понял. "template" используеться для подстановки значений псевдонима на место шаблона, но как єто работает?
Есть пример (C++):
template <typename T, typename T_half, int size>
class double_uint
{
private:
void fromstring(const std::string &s);
std::string tostring(void) const;
public:
T lo_, hi_;
enum type_size
{
tsize = size,
hsize = size / 2,
qsize = size / 4
};
double_uint(const double_uint &u) : lo_(u.lo_), hi_(u.hi_) {}
double_uint(const T_half &hi1, const T_half &hi2, const T_half &lo1, const T_half &lo2)
: lo_(T(lo2) + (T(lo1) << qsize)),
hi_(T(hi2) + (T(hi1) << qsize)) {}
double_uint(const T &hi, const T &lo) : lo_(lo), hi_(hi) {}
explicit double_uint(const T &lo) : lo_(lo), hi_() {}
explicit double_uint(const std::string &s) {fromstring(s);};
double_uint(void) : lo_(), hi_() {}
explicit double_uint(const unsigned char *c) {memcpy(this, c, sizeof(*this));}
explicit double_uint(size_t len, const unsigned char *c)
{
if (len >= sizeof(*this))
{
memcpy(this, c, sizeof(*this));
}
else
{
memcpy(this, c, len);
memset(reinterpret_cast<unsigned char *>(this) + len, 0, sizeof(*this) - len);
}
}
Есть связь с классом ниже, правильно? Если я правильно понял, то класс отвечает за преобразование из "string"? Объясните код, если вас не затруднит.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей