Что делает конструктор по этому фрагменту кода сказать нельзя.
В представленном фрагменте кода только объявление конструктора. Это значит, что определение его находится где-то в другом месте. Определение содержит весь код функции, а объявление только сигнатуру (возвращаемое значение + название + параметры).
Учитывая, что набор параметров конструктора такой же как и набор членов данных класса, можно предположить, что конструктор просто инициализирует члены класса. Возможно, проверяет допустимость переданных параметров. Но это может быть совсем не так или только частично так. Без определения конструктора (его полного кода) нельзя в точности сказать, что он делает.
Кстати, определение может содержать и пустое тело функции, но и в этом случае оно отличается от объявления. Пустой конструктор может быть определен например так:
Cls::Cls(char c, double d, int i) {};
или содержать список инициализации с пустым телом:
Cls::Cls(char c, double d, int i): c(c), d(d), i(i) {};