看C++ primer 第四版(英文版)遇到了几个问题,请赐教!
问题1:用string,vector等包含的库是不是在iostream中有说明呢?在C++ primer的p132中提及When we compare library strings...这个意思不是要包含strings库吗?但是我在预编译加上#includeg++会报错(没有这个文件)?
问题2:在C++ primer的p86指出当一个string对象st1用另外一个string类对象str2赋值时所作的操作是:编译器需要delete和st1相关联的字符空间,并重新分配新的可供st2字符存放的空间,然后将st2对应的字符分配拷贝到st1中。
那么这里的st1所指的首地址是否改变呢?我一直以为是改变的,但是按照下面的程序看来是不变的,我想问一下这里到底做了什么呢?string类是不是可以动态分配同时可以自动回收空间,这和VLA是一个道理吗?
[code="c++"]
#include
int main(void)
{
std::string str1="str1\n";
std::cout < <str1;
std::cout < <str1.size() < <std::endl;
std::string str2(str1);
std::cout < <str2 < <std::endl;
std::cout < <"address of str1 :" < <&str1 < <std::endl;
std::cout < <"address of str2 :" < <&str2 < <std::endl;
std::string str3("str3\n");
str2=str3;
std::cout < <"address of str3 :" < <&str3 < <std::endl;
std::cout < <"address of str2 :" < <&str2 < <std::endl;
return 0;
}
[/code]