首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL vector 的有关问题

2013-04-26 
STL vector 的问题,在线等最近重拾C++ , 发现一个问题求解 :类定义如下:[解决办法]第一个问题:string sp

STL vector 的问题,在线等
最近重拾C++ , 发现一个问题求解 :

类定义如下:


[解决办法]
第一个问题:
string s=p;
其实就等于
string s = string(p);//隐式调用构造函数string(const char*)来构造一个新对象,再用这个对象来初始化s

第二个问题:
放进vector的时候只是调用复制构造函数初始化s的一个副本,所以不会出现野指针的情况。另外,在fun函数退出的时候会自动调用s的析构函数将s释放。。
[解决办法]
容器里放对象是会调用拷贝构造函数的。你可以自己写个类,显示构造个拷贝构造函数,里面写输出可以看到。
------解决方案--------------------



class test{
public:
test()
{
cout<<"create"<<endl;
}
test(const tess& a){
cout<<"copy"<<endl;
}
};

int main()
{
test t;
vector<test> vec;
vec.push_back(t);

system("pause");
return 0;
}

[解决办法]
引用:
第一个问题:C/C++ code?1string s=p;其实就等于C/C++ code?1string s = string(p);//隐式调用构造函数string(const char*)来构造一个新对象,再用这个对象来初始化s
第二个问题:
放进vector的时候只是调用复制构造函数初始化s的一个副本,所以不会出现野指针的情况。另外,在fun函数退出的时候会自动……

同时说明一下,std::string 一般是有Copy-On-Write机制,所以不会有内存使用浪费。
http://www.cnblogs.com/Solstice/archive/2012/03/17/2403335.html

热点排行