日志47160228

发现Keil可以编译C++,所以打算写几个类封装stm32的功能。

已经写了一个LED类,使代码简明了许多:

extern "C"{
#include "stm32f10x.h"
#include "delay.h"
}
#include "led.hpp"

    
int main()
{
     
    LED::LEDClockInit(RCC_APB2Periph_GPIOB);
    LED B12=LED(GPIOB,GPIO_Pin_12);
    B12.open();
    while(1)
    {
        B12.reverse();
        delay_ms(500);
    }
} 

 

另外我想到了一个问题:C++类的成员函数的静态变量是类共有的还是实例私有的?于是写了测试代码:

#include <iostream>

using namespace std;

class A {
public:
    A(int a) :m_a(a) {};
    int m_fun(int n);
private:
    int m_a;
};

int A::m_fun(int n)
{
    static int s_val = 0;
    cout << "\tn=" << n << "\n\ts_val=" << s_val << "\n\tm_a=" << m_a << endl;
    s_val += n;
    return m_a + n;
}

int main()
{
    A a1(1), a2(2);
    cout << "a1:" << endl;
    a1.m_fun(3);
    cout << "a2:" << endl;
    a2.m_fun(3);
    cout << "a1 again:" << endl;
    a1.m_fun(3);
    cout << "a2 again:" << endl;
    a2.m_fun(3);
    return 0;
}

结果如下:

果然C++类的成员函数只是默认接受this指针的普通函数,只有一份代码啊。

发表评论

电子邮件地址不会被公开。 必填项已用*标注