【发布时间】:2013-12-16 15:04:33
【问题描述】:
我在头文件中有这个声明
private:
MyIntegerClass *myArr;
MyIntegerClass myIntegerClass;
MyIntegerClass *ptr_myIntegerClass = &myIntegerClass;
MyIntegerClass 是一个类,它有一个包含整数的数据成员。它有两个成员函数——一个访问器和一个修改器。
这是 Array-class 的 cpp 文件 - 为数组分配内存的类,并用值填充数组并最后打印数组
Array::Array() {
myArr = new MyIntegerClass[10];
for (int i = 0; i < 10; i++) {
ptr_myIntegerClass->setNumber(i);
myArr[i] = *ptr_myIntegerClass;
}
}
Array::~Array() { }
void Array::printArray() {
for (int i = 0; i < 10; i++) {
cout << myArr[i].getNumber() << endl;
}
我是 C++ 新手,我对 C 有一定的了解,并且通过反复试验使这个程序可以编译和打印这些值而没有错误。但是有几件事我不明白:
-
myArr 和 ptr_myIntegerClass 都是指针。但是以下怎么可能是正确的:
myArr[i] = *ptr_myIntegerClass;
据我所知 - 将 * 放在指针前面意味着您取消引用指针?
对?那么myArr 是一个指针如何存储这个取消引用的值呢?
或者我错了 myArr 是一个指针?但是为什么在头文件中用*声明呢?
【问题讨论】:
-
你为什么使用
namespace std? -
@jeffrey - Eclipse 自动生成这个
-
我对此表示严重怀疑。
-
是的。鬼能解释。但看在上帝的份上,请移除它。
-
@Jefffrey - 其他人也说过 Eclipse 会这样做。