在构造函数中初始化变量
initialize variable in 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 的构造函数中做到这一点呢?
您可以在其定义中定义一个指向创建类 '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
有关更多信息,请查看此内容
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持