随笔分类 - C++练习
摘要:练习 15.25:我们为什么为 Disc_quote 定义一个默认构造函数?如果去除该构造函数的话会对 Bulk_quote 的行为产生什么影响? 因为 Disc_quote 的默认构造函数会运行 Quote 的默认构造函数,而 Quote 默认构造函数会完成成员的初始化工作。 如果去掉该构造函数的
阅读全文
摘要:练习 15.24:哪种类需要虚析构函数?虚析构函数必须执行什么样的操作? 作为基类使用的类应该具有虚析构函数,以确保在删除指向动态分配对象的基类指针时,根据指针实际指向的对象所属的类型运行适当的析构函数。 虚析构函数可以为空,即不执行任何操作。一般而言,析构函数的主要作用是清除本类中定义的数据成员。
阅读全文
摘要:练习 15.23:假设第 550 页的 D1 类需要覆盖它继承而来的 fcn 函数,你应该如何对其进行修改?如果你修改之后 fcn 匹配了 Base 中的定义,则该节的那些调用语句将如何解析? 将 D1 类的 fcn 函数更改为 int fcn()。 p2->fcn(42),这一条调用语句将出错。
阅读全文
摘要:练习 15.18:假设给定了第543页和第544页的类。同时已知每个对象的类型如注释所示,判断下面的哪些赋值语句是合法的。 解释那些不合法的语句为什么不被允许: Base *p = &d1; //d1的类型是 Pub_Derv p = &d2; //d2的类型是 Priv_Derv p = &d3;
阅读全文
摘要:练习15.4:下面哪条声明语句是不正确的?请解释原因。 class Base { ... }; (a)class Derived : public Derived { ... }; (b)class Derived : private Base { .. }; (c)class Derived :
阅读全文
摘要:练习 15.1:什么是虚成员? 在类中被声明为 virtual 的成员,基类希望这种成员在派生类中被重定义。除了构造函数外,任何非 static 成员都可以成为虚成员。 练习 15.2:protected 访问说明符与 private 有何区别? protected 为受保护的访问标号,protec
阅读全文
摘要:c为int,值为3,d的类型为int&,值为3,b的值一直不变,a=b作为参数,编译器分析表达式并得到它的类型作为d的推断,但不实际计算该表达式。
阅读全文
摘要:前三个正确,后三个错误。 j的类型推断结果为整数,k的类型推断结果为整型常量,p的类型推断结果为指向整型常量的指针,j2的类型推断结果为整数,k2的类型推断结果为整数。
阅读全文
摘要:非法,null是一个int变量,p是一个int指针,二者不能直接绑定。 语法角度改为 原意改为
阅读全文
摘要:v2和p3是顶层const,分别表示一个整型常量和一个整型常量指针。 p2和r2是底层const,分别表示它们所指和所引用的对象是常量。 r1=v2合法,r1是一个非常量引用,v2是一个常量,v2的值拷贝给r1对v2不会有任何影响。 p1=p2是非法的,p1是一个普通指针,p2指向一个常量,p1指向
阅读全文
摘要:(a)是非法的,非常量引用r不能引用字面值常量0。 (b)是合法的,i是一个常量,r是一个常量引用,此时r可以绑定到字面值常量0。 (c)是合法的,i是一个常量引用,此时r可以绑定到字面值常量0。 (d)是合法的,p3是一个常量指针,p3的值永不改变,即p3永远指向变量i2。 (e)是合法的,p1指
阅读全文
摘要:下面哪些句子是合法的?如果不合法的句子,请说明为什么? (a)非法,const对象一旦创建之后其值就不能改变,所以const对象必须初始化。 (d)非法,sz是一个const对象,其值不能改变
阅读全文
摘要:说明下列变量的类型和值: (a)ip是一个整型指针,指向一个整型数,它的值是所指整型数在内存中的地址;i是一个整型数;r是一个引用,它绑定了i,可以看作是i的别名,r的值就是i的值。 (b)i是一个整型数;ip是一个整型指针,但是它不指向任何具体的对象,它的值初始化为0。 (c)ip是一个整型指针,
阅读全文
摘要:编写代码分别更改指针的值以及指针所指对象的值 说明指针和引用的主要区别 指针本身就是一个对象,允许对其赋值和拷贝,而指针的生命周期内它可以指向几个不同的对象;引用不是一个对象,无法令引用重新绑定到另外一个对象。 指针无须在定义时赋值,和其他内置类型一样,在块作用域定义的指针如果没有被初始化,也将拥有
阅读全文

浙公网安备 33010602011771号