by Leozheng @ SRMVision
SRM-Vision-2022
├───assets # 资源文件
├───config # 配置参数
├───docs # 说明文件与照片
├───modules # 程序
│ ├───camera #相机驱动
│ ├───controller # 控制器
│ │ ├───controller.h #控制器类定义
│ │ └───controller.cpp #控制器类实现
│ └───.........
├───main.cpp # 主函数
├───README.md # 项目说明
└───............
class Controller {
public:
// 这四个函数非常特殊, 详见后文
Controller(int id);
Controller();
Controller(const Controller &controller);
~Controller();
bool Initialize(); // 初始化控制器
void Run(); // 控制器运行
protected:
// 保护成员函数
void ReceiveData(); // 接收数据
void ProcessData(); // 处理数据
void SendData(); // 发送数据
// 保护数据成员
int robot_id_;
double send_data_; // 控制器接受到的数据
double *receive_data_; // 控制器发送的数据
};
#include <iostream>
using namespace std;
class Foo {
public:
void bar();
private:
int b;
};
void Foo::bar() {
int b = 2; // b 为局部变量
this->b = 3; // this->b 为成员数据
cout << b << endl << this->b << endl;
}
int main() {
Foo foo;
foo.bar();
return 0;
}
#include <iostream>
using namespace std;
class Foo {
public:
static void fun();
void bar();
private:
static int static_value;
int value = 0;
};
int Foo::static_value = 0; // static 成员必须在类外初始化
void Foo::fun() {
++static_value;
// ++value // wrong.
}
void Foo::bar(){
++static_value;
++value;
cout << static_value << " " << value << endl;
}
int main() {
Foo foo_1,foo_2;
foo_1.bar(); // 1 1
foo_2.bar(); // 2 1
return 0;
}
#include <iostream>
using namespace std;
class Foo {
public:
// 只读访问, 只能返回 const int &, 注意两个 const 的区别
const int &value_read() const { return value; }
// 读写访问
int &value_rw() { return value; }
private:
int value = 0;
};
int main() {
Foo foo;
cout << foo.value_read() << endl; // 输出 0
foo.value_rw() = 1; // 没有 const 且传出引用, 默认可以修改
// foo.value_read() = 1; // 只读访问, 不可修改
cout << foo.value_rw() << endl; // 输出 1
return 0;
}
请修改并优化上一讲的时钟程序,要求:
1. 面向对象实现,规范文件结构,类的申明与实现分开在.h与.cpp中。
2. 规范设计成员函数与成员变量的访问范围。
3. 程序需要有:显示当前时间、修改时间的功能,其他请自由发挥。
@ SRMVision