我尝试使用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))),那就完美了。
有人可以向我解释为什么这不起作用吗?