Array作为C++类成员变量

Fou*_*ind 4 c++ arrays memory-management

我可以用以下方式在c ++中使用数组作为类的成员变量吗?或者我应该将它声明为指针?以下代码工作正常.这样做是否正确?(我为了简单而公开了).我也不确定我是否正确使用地图.

#include <iostream>
#include <map>
#include <string.h>

using namespace std;

class SimpleMap{
public:
    map<string,int> m;
    int i;
    int j[];
    SimpleMap(int ii);
};

SimpleMap::SimpleMap(int ii){
    i = ii;
}



int main(){
    SimpleMap mm(5);
    mm.m["one"] = 1;

    cout<<"hi hru";

    cout<<mm.m["one"];

    mm.j[0] = 11;
    cout << mm.j[0];
}
Run Code Online (Sandbox Code Playgroud)

编辑:我添加了地图成员变量.

Tom*_*rdt 5

实际上,你已经有了一个指针.但它没有初始化.

设置j[0]会在某些情况下,一定的工作,但你写的未分配的内存,或者更糟,内存另一个对象使用.基本上你在应用程序中创建了一个巨大的漏洞.

考虑使用a std::vector,它只是为您完成所有分配/解除分配.如果这不是一个选项,至少初始化数组并且不要超过你分配的数量.

j[]它只是*j指向随机存储器地址的指针.非常非常非常糟糕.