我在理解指针函数的某些方面时遇到了一些困难。以下是我运行的代码:
#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);
那么,&符号可选吗?编译器是否能够识别我想传递指针而不是实际对象并自行处理呢?在这种情况下,我期望会出现编译错误。如果我的代码在不应该工作的情况下运行,我会感到非常沮丧 :-)