一、前言

  在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
stock00.h

相关文章: