在构造函数中初始化变量

initialize variable in constructor

本文关键字:变量 初始化 构造函数      更新时间:2023-10-16
 #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 的构造函数中做到这一点呢?

您可以在其定义中定义一个指向创建类 'cclass' 的类的指针:

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

然后,将此关键字添加到类"bclass"作用域上的类"cclass"的定义中:

ob = new cclass(this);

注意:某些编译器可能会在类"cclass"的构造函数上抛出错误,您需要做的就是使构造函数公开。

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

你必须将 bclass 对象传递给 cclass 构造函数:

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

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

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

ob = new cclass(this.a(;

关键字"base"允许访问父属性

base.a = 9

有关更多信息,请查看此内容