C:使用计算参数调用基类构造函数

这个简单的例子演示了调用基类构造函数的C语法 – 据我所知,它是一个C学习者:
class BaseClass {
protected:
  int i;
public:
  BaseClass(int x) { 
     i = x; 
  }
};

class DerivedClass: public BaseClass {
  int j;
public:
  DerivedClass(int x,int y): BaseClass(y) { 
     j = x; 
  }

这里,基类构造函数可以将派生类构造函数的命名参数作为输入.

现在,如果我想使用不是DerivedClass()的直接输入的输入值调用BaseClass()构造函数,该怎么办?基本上,我想在DerivedClass()中使用x和y做一些多线工作,然后将计算值传递给BaseClass().这可以用构造函数完成吗?这应该用某种初始化方法来完成吗?

解决方法

你可以这样做,是的:
class BaseClass
{
  public:
    BaseClass(int x) : i(x) {}

  private:
    int i;
};

class DerivedClass: public BaseClass
{
  public:
    DerivedClass(int x,int y):
      BaseClass(compute(x,y)),// Neither i or j are initialized here yet
      j(x)
      {}

  private:
    static int compute(int a,int b) { return a + b; } // Or whatever
    int j;
};

请注意,您甚至可以将compute()作为非静态方法,但请注意,在调用时不会初始化DerivedClass或BaseClass成员.所以你将无法依赖他们的价值观.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...