6.9 练习
部分练习题的答案可以在本书的电子文档“Annotated Solution Guide for Thinking in C++”中找到,只需支付很少的费用就可以从http://www.BruceEckel.com得到这个电子文档。
6-1 写一个简单的类Simple,其构造函数打印一些信息告诉我们它被调用。在函数main()中定义对象。
6-2 在练习1的类中增加一个析构函数,让它打印一些信息告诉我们它被调用。
6-3 修改练习2中的类,让它包含一个int成员。修改它的构造函数,让其带一个int参数,该参数的值存放在类的int成员中,构造函数和析构函数打印该整数的值。这样当对象创建和销毁时我们就可以看到。
6-4 写一个程序演示一下这种情况:当用goto跳出一个循环时,析构函数仍然被调用。
6-5 写两个for循环,用他们打印出0到10的值。对于第一个,在for循环之前定义循环计数器,而对于第二个,在for循环控制表达式中定义循环计数器。作为本练习的第二部分,修改第二个for循环的标识符使它与第一个循环的计数器的名字相同,编译程序,看看会得到什么结果。
6-6 修改第5章最后的文件Handle.h、Handle.cpp和UseHandle.cpp,以使用构造函数和析构函数。
6-7 使用聚合初始化创建一个double类型数组,指定其大小,但是并不提供所有的数组元素值,使用sizeof确定数组的大小并打印出这个数组,然后通过使用聚合初始化创建一个double类型数组并且自动地计算数组大小,然后打印这个数组。
6-8 使用聚合初始化创建一个string类对象数组,创建一个Stack用来存储这些字符串,逐步把数组中的元素压入Stack中,最后,从Stack中弹出并打印它们。
6-9 利用练习3中创建的对象数组演示自动计数和聚合初始化。在类中增加一个成员函数来打印一条信息。计算数组的大小,对数组的每个元素,调用新的成员函数。
6-10 创建一个没有构造函数的类,显示我们可以通过默认的构造函数创建对象。现在创建类的一个非默认的构造函数(带一个参数),编译试试看。解释所发生的情况。