- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)