在构造函数中初始化变量

时间:2014-12-20 06:07:51

标签: c++ oop object inheritance constructor

 #include <iostream>

using namespace std;

class aclass
{
   public:

   int a;
};

class cclass: public aclass
{
   public:  
   cclass()
   {
      a= //what do i write here//
   }
}

class bclass : public aclass 
{
public:
   bclass()
   {
      a=9;     //a is not constant here. I have just taken it const for simplicity.
   }

 int func();
};


int bclass::func()
{
   cclass * ob;
   ob = new cclass(); 
}

如何使cclass对象的变量a的值等于创建它的bclass对象的a值(cclass的对象)。我可以在函数func()中做到这一点 通过做

ob->a = a;

但我如何在cclass的构造函数中执行此操作?

4 个答案:

答案 0 :(得分:1)

您必须将类对象传递给类构造函数: -

class cclass: public aclass
{
   cclass(const bclass& b)
   {
      a = b.a;
   }
}

如果您忽略代码中的其他特性。

答案 1 :(得分:1)

您可以定义指向创建类&#39; cclass&#39;的类的指针。在其定义中:

class cclass: public aclass
{
    bclass * bclass_ref;
    cclass(bclass * ref)
    {
        bclass_ref = ref;
        a = b_class_ref->a;
    }
}

然后,您将关键字添加到您的班级定义&#39; cclass&#39;在班级&#39; bclass&#39;范围:

ob = new cclass(this);

注意:某些编译器可能会在类的构造函数上抛出错误&#39; cclass&#39;您需要做的就是将构造函数设为公共。

编辑:我自己测试了代码,你需要添加类的定义&#39; cclass&#39;在定义函数之前&#39; bclass :: func&#39;

答案 2 :(得分:-2)

您需要将其作为func()方法中的参数传递。

  

ob = new cclass(this.a);

答案 3 :(得分:-2)

关键字“base”允许访问父属性

base.a = 9

了解更多信息,请查看this