【发布时间】:2012-01-17 00:13:38
【问题描述】:
在尝试显式调用基本副本 ctor 时,我在此代码中收到 error C2082: redefinition of formal parameter 'rval':
#include <iostream>
using namespace std;
class Base
{
public:
Base(const Base& rhs){ cout << "base copy ctor" << endl; }
};
class Derived : public Base
{
public:
Derived(const Derived& rval) { Base(rval) ; cout << "derived copy ctor" << endl; }
// error C2082: redefinition of formal parameter 'rval'
};
int main()
{
Derived a;
Derived y = a; // invoke copy ctor
cin.ignore();
return 0;
}
但是,如果这样做:
Derived(const Derived& rval) { Base::Base(rval) ; cout << "derived copy ctor" << endl; }
然后就可以了。
我为什么要问这个? 根据StackOwerflow上的答案
我不必使用运算符:: 来访问基本副本ctor,
那我为什么会收到这个错误呢?
顺便说一句:我正在使用 Visual Studio 2010。
我还有一个问题:
我必须在派生类的用户定义的移动构造函数中调用base的移动构造函数吗?
【问题讨论】:
标签: c++ inheritance