不同类的对象比预期的?

时间:2017-06-06 16:27:07

标签: c++ oop c++11 constructor copy-constructor

我尝试使用OOP,这让我编写了以下代码:

#include <iostream>
#include <string>
#include <typeinfo>
using namespace std;
class A
{
int a;
public:
A()
{
    cout << "implicit constr\n";
    a = 0;
}
A(const int& x)
{
    a = x;
    cout << "parameter constr\n";
}
A(const A& x)
{
    a = x.a;
    cout << "copy constr\n";

}

A& operator = (const A& x)
{
    a = x.a;
    cout << "equal operator\n";
    return *this;
}


void print()
{
    cout << "\n" << a << "\n";
}
};


int main()
{
     A a(3);

     A b( A(a));

     b.print();

     return 0;
}

给定的错误是: 错误:请求会员&#39;打印&#39;在&#39; b&#39;中,这是非类别类型&#39; A(A)&#39; | 我使用typeid来验证b变成了什么对象?

b-s类的名称与object a的类不同。 (类的typeid名称是A1,而b&lt;类的类型名称是F1_A1LS)。

好吧,如果我将A b(A(a))修改为A b((A(a))),那就完美了。

有人可以向我解释为什么这不起作用吗?

0 个答案:

没有答案