В заголовочном файле:
#include "Client.h"
class EthernetClient : public Client {
public:
EthernetClient();
EthernetClient(uint8_t sock);
private:
uint8_t _sock;
};
Реализация:
EthernetClient::EthernetClient() : _sock(MAX_SOCK_NUM) { }
EthernetClient::EthernetClient(uint8_t sock) : _sock(sock) { }
MAX_SOCK_NUM
дефайн, определенный где-то ранее. Собственно не понятно, что значат эти строки:
EthernetClient::EthernetClient() : _sock(MAX_SOCK_NUM) { }
EthernetClient::EthernetClient(uint8_t sock) : _sock(sock) { }
Да, это перегруженные конструкторы. Первый конструктор без параметров, а второй принимает скорее всего кол-во сокетов. Но так как кол-во сокетов нужно самому классу, в первом случае он инициализирует заведомо заготовленной константой. В целом - обычный код.
Такие перегруженные конструкторы — обычное дело. Другой вопрос в том, что часто это приводит к дублированию кода. Поэтому в данном случае можно было бы обойтись одним единственным с параметром по умолчанию:
EthernetClient(uint8_t sock = MAX_SOCK_NUM) : _sock(sock) { }
В более сложных случаях, начиная с c++11 можно выполнять делегирование конструкторов (вызов одного из другого):
EthernetClient() : EthernetClient(MAX_SOCK_NUM) { }
Делегирование позволяет избежать необходимости выноса общего кода в некую init-функцию.
Подробнее про инициализатор конструктора можно почитать тут: Двоеточие в определении конструктора
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется массив с положительными элементами (N элементов)Районном называется отрезок (l, r) (использовать нужно K районов, ни меньше ни больше),...
Как поменять значение индекса в mapС обычным значением понятно, обращаться через индекс