实现复制构造函数

时间:2015-10-22 02:16:12

标签: c++ copy-constructor

我正在尝试为每个人添加一个复制构造函数以运行main函数。我现在实现的目前打印出“b2.valuea = -858993460 b2.valueb = 10”所以它正确地读取了valueb但很明显,valuea出了问题。建议?

#include "stdafx.h"
#include <iostream>
using namespace std;


class A
{
  int valuea;

public:
int getValuea() const { return valuea; }
void setValuea(int x) { valuea = x; }

// copy constructor
A() {}
A(const A& original)
{
    valuea = original.valuea;
}


};

class B : public A
{

int valueb;

public:

int getValueb() const { return valueb; }
void setValueb(int x) { valueb = x; }

// copy constructor
B(){}
B(const B& original)
{
    valueb = original.valueb;
}

};

int main()
{

B b1;
b1.setValuea(5);
b1.setValueb(10);
B b2(b1);
cout << "b2.valuea = " << b2.getValuea() << "b2.valueb = " <<
    b2.getValueb() << endl;
}

1 个答案:

答案 0 :(得分:1)

您没有在派生的复制构造函数中调用基类的复制构造函数。 改变它:

B(const B& original) : A(original){
  valueb = original.valueb;
}

它会输出

b2.valuea = 5
b2.valueb = 10