Звероящер (27.04.2018 06:27, просмотров: 1353)
Коллеги, копался тут недавно во всяких исходниках плюсовых и наткнулся на класс, где все члены класса были объявлены статическими. Что преследовал разработчик, можно же было обойтись без статика, а при создании экземпляра класса сделать его статическим?
В чём разница между этим с точки зрения выделения памяти и прочего:
class CLED
{
public:
static void Blink_error(u8);
private:
static void drive_LED();
};
void CLED::Blink_red(u8 cnt)
{
__disable_interrupt();
for(; cnt !=0; cnt--) drive_LED();
__enable_interrupt();
}
void CLED::drive_LED()
{
CLEARBIT(LED_R_PORT,LED_R);
__delay_in_ms(200);
SETBIT(LED_R_PORT,LED_R);
__delay_in_ms(200);
}
void main()
{
CLED::Blink_red(10);
}
и этим
class CLED
{
public:
void Blink_error(u8);
private:
void drive_LED();
};
void CLED::Blink_red(u8 cnt)
{
__disable_interrupt();
for(; cnt !=0; cnt--) drive_LED();
__enable_interrupt();
}
void CLED::drive_LED()
{
CLEARBIT(LED_R_PORT,LED_R);
__delay_in_ms(200);
SETBIT(LED_R_PORT,LED_R);
__delay_in_ms(200);
}
static CLED led;
void main()
{
led.Blink_red(10);
}