一、前言
在IC前端设计/验证领域,只会HDL远远不够。目前大多数项目使用已开发好的系统架构和IP Core,因此设计部分的工作量慢慢向系统集成和验证方向转移。而在集成和验证过程中,往往以各种脚本和面向对象的高级语言为主要工具。SystemVerilog已成为主流验证语言,相当于VerilogHDL与C++的结合体。故掌握C++基础是十分必要的。
二、类封装示例及解读
本文以《C++ Primer Plus》书中的一个简单的代码示例,讲讲自己对类封装的理解。出于练习、总结和记录的目的。OOP设计思想中:万物皆为某一类中的一个对象,类即为一群具有共性对象的抽象表示。每个类包含了数据成员和方法,成员是类包含的特性,而方法表示这一类的对象能完成哪些事情。以下示例描述的是股票这一类别。股票肯定包含股票数量和每股的价钱了。至于方法最起码可以买、卖,变动价格吧。
一般将类声明、方法定义分别放置在class_name.h和class_name.cpp文件中。这样的做法正符合了“封装”、“细节隐藏”的思想,让应用程序无需关注实现细节,这一点与C语言一致。先来看看class_name.h文件中类声明。
1 #ifndef STOCK00_H_ 2 #define STOCK00_H_ 3 4 #include <string> 5 6 class Stock 7 { 8 private: 9 std::string m_company; 10 long m_shares; 11 double m_share_val; 12 double m_total_val; 13 void set_tot() {m_total_val = m_shares * m_share_val;}//内联函数 14 public: 15 //two constructors 16 Stock();//default constructor 17 Stock(const std::string &co,long n = 0,double pr = 0.0); 18 //destructor 19 ~Stock(); 20 void acquire(const std::string &co,long n,double pr); 21 void buy(long num,double price); 22 void sell(long num,double price); 23 void update(double price); 24 void show() const;//promises not to change invoking object 25 const Stock &topval(const Stock &s) const; 26 }; 27 28 #endif