第三章 深入理解字符串 Thinking in C++ V2
C++标准规定字符串内存的分配允许但不要求使用引用计数。但无论是否使用引用计数,类的实现对用户而言必须是透明的。
引用计数:在引用计数中,每一个对象负责维护对象所有引用的计数值。当一个新的引用指向对象时,引用计数器就递增,
当去掉一个引用时,引用计数就递减。当引用计数到零时,该对象就将释放占有的资源。
使用引用计数的一个优点是可以实现写时复制,这样可以节省时间和内存。但在多线程编程中几乎无法使用引用计数技术。
string初始化的几种方式:
string imBlank; //创建string对象,但不添加任何字符数据,但可以获得string的长度为0
string heyMom("Where are my socks?"); //将一个文字的引用数组作为参数,传递给构造函数。
string standardReply = "Beamed into deep " //使用等号来初始化strin对象。注意这里的语法,编译器自动将字符串合并。
"space on wide angle dispersion?";
string useThisOneAgain(standardReply); //使用一个字符串对象初始化另一个字符串对象。
string s1("What is the sound of one clam napping?");
string s2("Anything worth doing is worth overdoing.");
string s3("I saw Elvis in a UFO");
string s4(s1, 0, 9); //从下标 0 处开始,复制8个元素给string s4作为其初始化数据。输出 what is t
string quoteMe = s4 + "that" +
// substr() copies 10 chars at element 20
s1.substr(20, 10) + s5 +
// substr() copies up to either 100 char
// or eos starting at element 5
"with" + s3.substr(5, 100) +
// OK to copy a single char this way
s1.substr(37, 1);

浙公网安备 33010602011771号