面向对象的面试题:

1.面向对象的程序设计思想是什么?

答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。

2.什么是类?

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。

3.对象都具有的两方面特征是什么?分别是什么含义?

答:对象都具有的特征是:静态特征和动态特征。

静态特征是指能描述对象的一些属性,动态特征是指对象表现出来的行为

4.在头文件中进行类的声明,在对应的实现文件中进行类的定义有什么意义?

答:这样可以提高编译效率,因为分开的话只需要编译移除生成对应的.obj文件后,应用该类的地方,这个类就不会被再次编译,从而大大提高了效率。

5.在类的内部定义成员函数的函数体,这种函数会具备那种属性?

答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。

内联函数:从源代码层看,有行数的结构,而在编译后却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是否能形成内联函数,需要看编译器对该函数定义的具体处理。

6.成员函数通过什么来区分不同对象的成员数据?为什么它能够区分?

答:通过this指针来区分的,因为它指向的是对象的首地址。

7.C++编译器自动为类产生的四个缺省函数是什么?

答:默认构造函数,拷贝构造函数,解析构造函数,赋值函数。

8.拷贝构造函数在哪几种情况下会被调用?

答:1.当类的一个对象去初始化改类的另一个对象时;;

       2.如果函数的形参是类的对象,调用函数进行形参和实参结合时;

       3.如果函数的返回值是类对象,函数调用完成返回时。

9.构造函数与普通函数相比在形式上有什么不同?

答:构造函数是类的一种特殊成员函数,一般情况下 ,它是专门用来初始化对象成员变量的构造函数的名字必须与类名相同,它不具有任何类型,不返回任何值。不能被认为调用。

10:什么时候必须重写拷贝构造函数?

答:当构造函数涉及到动态储存分配空间时,要自己写拷贝构造函数,并且要深拷贝。

    神拷贝是指原对象与拷贝对象相互独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用它克隆(假设法律允许)了另外一个人叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Vue(值)对象,如预定义类型Int32, Doube, 以及结构(struct),枚举(Enum)等。

浅拷贝是指原对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,

可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。比较典型的就有Reference(引用)对象,如Class(类)。

你可能感兴趣的:(面向对象的面试题:)