我在理解指针函数的某些方面时遇到了一些困难。以下是我正在运行的代码:C++中指针参数的函数
#include <iostream>
using namespace std;
class Item
{
public:
Item(Item * it)
{
data = it->data;
}
Item(int d)
{
data = d;
}
void printData()
{
cout << data << endl;
}
private:
int data;
};
int main()
{
Item i1(79);
Item i2(i1);
i1.printData();
i2.printData();
}
此代码有效,问题是我不明白为什么! Item类的构造函数需要一个指针,但我将一个对象传递给它,而不是指向该对象的指针。该代码也适用,如果我实际上通过使用指针:
Item i2(&i1);
所以,是&是可选的?编译器是否意识到我打算传递一个指针而不是实际的对象并自己照顾它?我希望在这种情况下编译错误。我变得非常沮丧,如果我的代码工作时,它不应该:-)