C++ 对象指针数组 的初始化 有关问题
C++ 对象指针数组 的初始化 问题class SkipNode{public:SkipNode( int k 0, int v 0 ) : key(k), val(
C++ 对象指针数组 的初始化 问题
class SkipNode
{
public:
SkipNode( int k = 0, int v = 0 )
: key(k), val(v) {}
int key;
int val;
};
如下,这样初始化对吗?
SkipNode* newNodes = new SkipNode[5] (5, 4);
够早了5个对象,每个对象都调用构造函数,有什么错吗? C++ 对象指针数组
[解决办法]一行的说,没有这样的用法
[解决办法]#include<iostream>
using namespace std;
class SkipNode
{
public:
SkipNode( int k = 0, int v = 0 )
: key(k), val(v) {}
int key;
int val;
};
int main()
{
SkipNode* newNodes[5];
for(int i=0;i<5;i++)
{
newNodes[i]=new SkipNode;
newNodes[i]->key=1;
newNodes[i]->val=1;
}
return 0;
}
这样就行了
[解决办法]#include <memory>
#include <iostream>
class SkipNode
{
public:
SkipNode(int k = 0, int v = 0)
: key(k), val(v) {}
int key;
int val;
};
int main()
{
std::allocator<SkipNode> alloc;
SkipNode* p = alloc.allocate(5);
for (int i = 0; i < 5; ++i)
{
//C++ 0x
alloc.construct(p + i, 5, 4);
}
for (int i = 0; i < 5; ++i)
{
alloc.destroy(p + i);
}
alloc.deallocate(p, 5);
return 0;
}
[解决办法]不要和编译器做游戏
[解决办法]需要支持C++11的编译器。诸如:VS2013/g++4.8.x/Clang3.x
http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx
http://msdn.microsoft.com/en-us/library/vstudio/dn387583.aspx