[英]Why I am getting UMR(unInitialized Memory Read)Error in following code snippet
Why I am getting UMR(unInitialized Memory Read)Error in following code snippet. 为什么在以下代码段中出现UMR(未初始化内存读取)错误。 I am getting UMR error while calling copy constructor of derived class 调用派生类的副本构造函数时出现UMR错误
class base{
public :
base(int);
int id;
int getid()
{
return id;
}
};
base::base(int a)
{
id = a;
}
class derived:public base{
public :
derived(derived &);
int inum;
int getnum()
{
return inum;
}
};
derived::derived(derived &d):base(d.getnum()) // UMR Error
{
inum = id;
}
Can anybody have any idea what is wrong with the implementation? 有人能知道实现有什么问题吗?
You derived class never initialize inum
variable. 您派生的类永远不会初始化inum
变量。 Error message said it to you. 错误消息告诉您。 d.getnum()
returns uninitialized inum
variable. d.getnum()
返回未初始化的inum
变量。
I don't think you can compile your code, a few issues dressed below: 我认为您无法编译代码,以下是一些问题:
class derived:class base{
^^^-> public
should be: 应该:
class derived : public base
change int getnum();
更改int getnum();
to int getnum() const;
derived::derived(derived &d):base(d.getnum) // UMR Error
^^^ function call?
why initialize base::id with derived::inum? 为什么用派生:: inum初始化base :: id?
should be: 应该:
derived::derived(const derived &d) : base(d) // initialize base with base
{
^^^ copy constructor has const
inum = d.inum; // initialize derived member
// inum = id; why you assign id back to inum again?
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.