C++ 程序员面试经典问题

C++ 程序员面试经典问题

ID:38248150

大小:31.54 KB

页数:5页

时间:2019-06-06

C++ 程序员面试经典问题_第1页
C++ 程序员面试经典问题_第2页
C++ 程序员面试经典问题_第3页
C++ 程序员面试经典问题_第4页
C++ 程序员面试经典问题_第5页
资源描述:

《C++ 程序员面试经典问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序员面试经典问题1、静态成员必须要在类外初始化,无法在构造函数内初始化。新标准的C++也允许在生命静态数据成员的是后直接加等于号进行初始化,但是大部分编译器不支持。所以最保险的办法就是在类定义的外面再写:intFoo::a=0;函数则很普通成员函数的声明以及实现没区别,唯一要注意的是,静态函数是没有this指针的,因此不能访问任何非静态的其他成员函数或成员变量,如果要访问需要传递this指针进去1、重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者

2、顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。2、拷贝构造函数的参数为什么是类的引用,而不是类的对象,传递对象的话会造成极度的负担,一个对象的大小难以确定,可能会非常大,如果像普通那样进行浅拷贝的话,可能会带来资源不足的问题,严重拖累程序的效率。按引用传递则传递了地址(像指针),同时在语法上却像传值一样方便。这样就不会有很大负担了3、常对象必须初始化,并且初始化后不能修改数据成员。常成员函数不能更新对象的数据,也不能调用非const修饰的成员函数。常对象只能调用类

3、的常成员函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元。(2)两个类要共享数据的时候。1.2.1优点:能够提高效率,表达简单、清晰。1.2.2缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。2.1友元函数的参数:因为友元函数没有this指针,则参数要有三种情况:2.1.1 要访问非static成员时,需要对象做参数;2.1.2 要访问static成员或全局变量时,则不需要对象做参数;2.1.3 如果做参数的对象是全局对象,则不需要对象做参数;2.2友元函数的位置因为友

4、元函数是类外的函数,所以它的声明可以放在类的私有段或公有段且没有区别。2.3友元函数的调用可以直接调用友元函数,不需要通过对象或指针2.4友元函数的分类:根据这个函数的来源不同,可以分为三种方法:2.4.1普通函数友元函数2.4.1.1 目的:使普通函数能够访问类的友元1、内联函数就是编译的时候直接把函数那段代码填到调用函数的地方,因为不用像普通函数调用那样去寻址,所以速度更快2、构造函数的特点:1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;2.构造函数的功能主要用于在类的对象创建时定义初始化的

5、状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;5.构

6、造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。[1] 2.它可以重载;7、static变量是放在栈中,就是在程序的运行期都是存在的,函数中的STATIC变量是在编译时由编译器改名了的,所以在函数中是可以访问的,函数外是不可以访问的8、1、C语言函数的定义不能嵌套,函数的调用可以嵌套。2、C语言中函数的定义都是相互平行、相互独立的,也就是说

7、在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。嵌套函数,就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用,这一函数就是嵌套函数。一个为大家所熟知的例子就是qsort函数会将一个比较器cmp作为参数.在一个程序中,主函数调用了sum函数,而在sum函数中又调用了mul函数。在一个函数被调用的过程中又调用另一个函数,这就是函数的嵌套调用。如果是函数本身嵌套调用函数本身,那就是函数递归调用了。虚基类一般是在多继承的时候用。例如A水上交通工具B陆地交通工具C水陆两用坦克A和B、C都有start方法,那么C

8、的start方法就会有二义性,究竟继承自谁呢?这个时候就要用虚拟继承了,这个时候AB是C的虚基类。不能,因为子类继承父类的时候,先运行父

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。