【浙江大学】【面向对象程序设计】练习题2 部分题解2

2-23 Where is the memory allocated for the objects?

A.Cache
B.ROM
C.HDD
D.RAM
答案:应该是D(不确定,看之后改不改)

内存在电脑中起着举足轻重的作用。内存一般采用半导体存储单元,包括随机存储器(RAM,Random Access Memory),只读存储器(ROM,Read-Only Memory),以及高速缓存(cache)。
HDD(Hard Disk Drive) 是机械硬盘,是外存
C++典型的内存分配
在这里插入图片描述

2-24Which of the following best describes member function overriding?

A.Member functions having the same name in derived class only
B.Member functions having the same name and different signature inside main function
C.Member functions having the same name in base and derived classes
D.Member functions having the same name in base class only

答案:
应该是C.在基础base和派生类derived中具有相同名称的函数

member function overriding 成员函式覆写

1、成员函数定义(Member Function Definition)
(1)成员函数一定从属于类,不能独立存在,这是它与不同函数的区别
(2)成员函数定义可以放在类定义中,也可以先在类定义中声明,然后在类定义之外进行定义

例如:

class Date{
    .....
    
    public:
        void set (int y,int m,int d){ 	/*定义类成员函数*/ 
	 		year=y;
	 		month=m;
	 		day=d;
		 }
        void isLeapYear()                /*声明类成员函数*/
    .....
};
 
/* "::"为空间引导符 */
void Date::isLeapYear(){                 /*定义类成员函数*/			
	.....		

C++的重载(overload)与重写(override)

成员函数被重载(overload)的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual关键字可有可无。

重写(override)是指派生类函数重写基类函数,是C++的多态的表现,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual关键字。

2-25 Which feature of OOP is exhibited by the function overriding?

A.Polymorphism
B.Encapsulation
C.Abstraction
D.Inheritance

OOP的三大特点:
A Polymorphism多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。
重写(override)是指派生类函数重写基类函数,是C++的多态的表现。

B Encapsulation封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。

D.Inheritance继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。

2-26 What are inline member functions?

A.Member functions which can be called without object
B.Member functions whose definition is expanded in place of its call
C.Member functions whose definition is faster than simple function
D.Member function which is defined in single line
选B

incline function 内联函数,这是编译器用来减少执行时间的一种优化技术
C++的内联函数提供了一个替代方案。使用inline关键字,编译器用函数代码本身替换函数调用语句,然后编译整个代码(此过程成为代码展开)。因此,使用内联函数,编译器不必跳到另一个位置来执行函数,然后再跳回来,因为被调用函数的代码已经提供给调用程序。

定义inline函数
第一种情况:
class A
{
public:
  inline int add(int a, int b)
  {
    return (a+b);
  }
};
 
第二种情况:
class A
{
public:
  int add(int a, int b);
};
 
inline int A::add(int a, int b)
{
  return (a+b);
}
 
第三种情况:
inline int add_two (int a, int b)
{
  return (a+b);
}

2-28 Pass by address passes the address of object _________ and pass by reference passes the address of the object _________

A.Explicitly, explicitly
B.Implicitly, implicitly
C.Explicitly, Implicitly
D.Implicitly, explicitly
答案:可能是C
Explicitly明确的;implicitly隐含地
pass by value: 缺省情况下,C++以 by value 方式传递参数。函数参数都是以实参的副本为初值,如果返回对象的话,返回的也是返回参数的一个副本。而这些副本都是由对象的copy构造函数产出。这也就使得pass by value的操作比较耗时。
pass by address: 直接传递地址
pass by reference: 形参是原变量的一个别名,传递形参地址以传递原变量地址。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值