我是 C++ 新手,我正在尝试做以下事情:
我有一个简单的类,称为“sim”。我想创建一个包含 10 个类型为“sim”的元素的数组。所以我用过sim** a = new sim*[10]。
然后我循环运行,并创建新元素,如a[i]=new sim(i). 但是,当我后来尝试打印每个 a[i] 的值(字段)时,除了要得到的,我什么也得不到。
这是代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
class sim{
private:
    int x;
    const int y;
public:
    sim();
    sim(int z);
    ~sim();
    void showInfo();
    sim& operator=(const sim& s);
};
sim::sim():y(10),x(0)
    {}
sim::sim(int z):y(10),x(z)
    {}
sim::~sim()
    {}
void sim::showInfo()
    {
    cout<<"x="<<x<<", y="<<y<<endl;
    }
sim& sim::operator=(const sim& s)
    {
    x=s.x;
    return *this;
    }
int _tmain(int argc, _TCHAR* argv[])
{
    sim** a = new sim*[10];
    for(int i=0;i<10;i++)
    {
        a[i]= new sim(i);
    }
    for(int i=0; i<10; i++)
        (*a)[i].showInfo();
    getchar();
    return 0;
}
这是错误的输出:
x=0, y=10
x=-33686019, y=-830047754
x=-33686019, y=-572662307
x=1869774733, y=201385040
x=725928, y=726248
x=1423328880, y=11
x=24, y=2
x=55, y=-33686019
x=4814584, y=-1
x=0, y=0
Y 应始终为 10,x 应为 0-9。我究竟做错了什么?谢谢!