SystemC中 struct vs. class 的唯一区别
一、背景:
- 在 SystemC 示例里你会常看到这样的写法:
SC_MODULE(Top) {
// … ports, signals, 进程注册 …
};
- 而如果你展开宏
SC_MODULE(Top)
,它本质上就是:
struct Top : sc_core::sc_module {
// public:
// Top(sc_core::sc_module_name name) : sc_module(name) { … }
// // 成员端口、信号、进程注册写在这里
};
- 也就是说,模块一般用
struct … : sc_module
。下面解释为什么,以及它和用class
有何区别。
1. C++ 中 struct vs. class 的唯一区别
在 C++ 语法层面:
struct Foo { … };
• 默认成员访问权限和继承都是public
。class Foo { … };
• 默认成员访问权限和继承都是private
。
功能上二者完全等价。于是:
- 用
struct Top : sc_module