随笔分类 -  C++练习

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