class X {
public:
X(int i) : num(i){}
int num;
};
void f(int i){
static X* px1 = new X(i);
X* px2 = new X(i);
cout<<px1->num;
cout<<px2->num<<' ';
};
void main(){
for (int i=0;i<5;i++)
f(i);
}
Run Code Online (Sandbox Code Playgroud)
这段代码会输出00 01 02 03 04,但我不太明白为什么静态指针px1不能使用它来改变它的值operator new.
此外,此代码有内存泄漏问题.我可以delete用px1吗?是否会delete在两个指针上使用解决内存泄漏问题?
class X;
class Y {
public:
~Y();
private:
map<int,X*> m;
vector<X*> v;
X* px;
};
Run Code Online (Sandbox Code Playgroud)
我想析构函数class Y应该看起来像这样?
Y::~Y() {
delete px;
for (vector<X*>::iterator it = v.begin(); it!=v.end(); it++)
delete *it;
v.clear();
}
Run Code Online (Sandbox Code Playgroud)
但那怎么样Y::m?
我有一些像这样的代码:
class A{
public:
A();
private:
vector<vector<int> > mat;
int a;
}
Run Code Online (Sandbox Code Playgroud)
默认构造函数应该如何?像这样?
A::A(): mat(10(10)),a(0){};
Run Code Online (Sandbox Code Playgroud)
但是对我来说还有一个问题..我不知道"行"的数量.(vector<vector<int> >应该有n个元素,并且vector<int>应该有4个元素)而且我也有访问元素的问题vector<vector<int> >.所以你能告诉我怎么做吗?谢谢.:)