C++常见面试问题概要1.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C常见面试问题概要1

常量指针和指针常量: 常量指针:const int* p:指针指向一个常量,const修饰*,也就是说,*p是常量,不可变,但p是变量,p可变(指向内容不可变,指向可以改变),不需要初始化,可以在定义后赋值。 指针常量:int* const p:指针是一个常量,const修饰p,即是p是常量,p不可变,但指向的*p可变。(指向不可变,内容可变),必须初始化 堆和栈的生长方向? 答:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,他的生长方向是向下的,是向着内存地址减小的方向增长。Dynamic_cast,const_cast,static_cast,reinterpret_cast区别: 答:(1)dynamic_cast:基类和派生类之间的转换,运行期间,会检查这个转换是否可能。表达式dynamic_castT*(a) 将a值转换为类型为T的对象指针。如果类型T不是a的某个基类型,该操作将返回一个空指针。static_castT*(a):编译期间处理,T和a必须是指针、引用、算术类型或枚举类型enum test{ test1,test2=2,test3=1,test4 }; 上面代码中,test1,test4的值是多少? 答:test1的值是0,test4的值是2,默认的值随前一个变量加1. 类成员中,如果有enum类型的定义,(不是成员变量),该定义是不占内存的! Enum类型中,如果不指定值,那么第一个默认的值是什么? 答:默认为0,后面一次增加1. 用new生成对象时,加括号和不加括号的区别。 答: 使用构造函数注意事项: 1 构造函数的函数名必须与类名相同,而且没有返回值,更不能用void来修饰。 2 当一个类没有定义构造函数时,编译器会为每个类添加一个默认的构造函数。默认构造函数访问权限是public的,且为inline函数(常识)。 位运算符: 如何判断字符指针是否已经到了字符串的末尾? 答:1.先用strlen求出字符个数N,然后判断字符串名减指针是否小于N 2.判断指针指向的字符是否为空(0)。 如何快速交换两个指针? Int* temp = p1; P1 = p2; P2 = temp; Char str[10]=”abc”; 那么sizeof(str) = 10; Strlen(str)=3,不算结束符的字符个数。 但, 若char str[]=”abc”; Sizeof(str)=4; Strlen(str)=3; 可以使用[]的容器包括:vector,deque. 当元素唯一且需要排序的时候,应选用容器set(键值相等)或map(键值不一样)。Set和map都会自动对元素进行升序排序。当元素不唯一且需要排序的时候,可选用multimap或者multiset。虽然也可以选用vector,但vector不会进行自动排序,调用sort函数,并且需要调用unique和erase函数才能使到元素唯一。 自定义的类型需要排序时,重载==和、运算符 Deque常见用法: 答:deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素。操作包括: 仿函数是什么? 答:C++中仿函数是通过重载()运算符实现的,创建一个类似函数行为的对象。 例如,在一个类中实现: Int operator()(int x,int y) { Return x+y; } 仿函数的作用:使到迭代和计算分离。例如for_each函数的实现: template??typename?Iterator,?typename?Functor?? ? void?for_each(?Iterator?begin,?Iterator?end,?Fucntor?func?)? ? {? ? for(?;?begin!=end;?begin++?)? ? func(?*begin?);? ? }? STL组成部分? 答:六大部分: (1):容器(container):包括vector、list、deques、map、set、multiset、multimap等 (2)迭代器(Iterator):提供了访问对象的方法。 (3)算法(algorithm):操作容器数据的模板函数,例如find、sort (4)仿函数(function object):重载了()运算符的结构体 (5)迭代适配器(adapter):stack和queue,底层实现可以是deque、vector、list等。(默认都是deque) (6)空间配置器(allocator):主要工作是对象的创建和销毁,内存的获取和释放。 STL容器: 序列容器(sequence containters):每个元素都有固定的位置。 --V

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档