我试图理解一些C++代码,发现我的C++有点烂。除其他外,该代码还具有以下类结构(为简洁起见,不显示CLASS1CLASS3):

class CLASS4
  :public CLASS3
  ,public CLASS2{
  public:
    CLASS4(double VARA, double VARB, char VARC, int VARD, double VARE, std::vector<double> VARF, std::string VARG = "")
    throw(Error);
    CLASS4(const CLASS4&);
    ~CLASS4();

    double METHOD1();

  protected:
    void METHOD2();
};

CLASS4::CLASS4(double VARA, double VARB, char VARC, int VARD, double VARE, vector<double> VARF, string VARG) throw(Error)
  :CLASS1(VARC, VARD, VARE, VARF, VARG)
  ,CLASS2(VARB)
  ,CLASS3(VARA, VARC, VARD, VARE, VARF, VARG){}

CLASS4::CLASS4(const CLASS4& VARH)
  :CLASS1(VARH), CLASS2(VARH), CLASS3(VARH){}

CLASS4::~CLASS4(){}

我了解对象的概念和继承的概念。我看到了CLASS4的构造函数和析构函数。我不明白的是继承:public CLASS3, public CLASS2中的类列表。目的是什么?此外,我想知道throw(Error)应该做什么。我也想知道第二个构造函数CLASS4(const CLASS4&);的目的是什么。我知道这对于C++程序员来说将是一个简单的问题。

最佳答案

class CLASS4
  :public CLASS3
  ,public CLASS2

是多重继承。 多重继承的目的的目的是使对象的功能同时具有 CLASS2 CLASS3 的功能,这是从 CLASS4 创建的(有关详细说明,请参见此页:http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr134.htm)

throw(Error)应该在发现错误时将您抛出Error,听起来可能很la脚,但是它用于异常处理:)(建议您阅读此页面以获得清晰的引用:http://msdn.microsoft.com/en-us/library/6dekhbbc(v=vs.80).aspx)
CLASS4(const CLASS4&);是副本构造函数。 “复制构造函数是C++编程语言中的一种特殊构造函数,用于创建一个新对象作为现有对象的副本。” (引自Wikipedia。http://en.wikipedia.org/wiki/Copy_constructor)

10-06 03:41