码迷,mamicode.com
首页 > 编程语言 > 详细

C++面试知识点总结

时间:2015-09-16 23:24:39      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:

预处理


#.宏定义求最大值  

#define MAX(x,y) ((x)>(y)?(x):(y))


#.const与define区别define 

在编译前执行,无数据类型,仅仅在编译前做替换const存在于程序中数据段,分配空间,有数据类型


#.const在C++中的作用

a、修饰常量

b、修饰函数参数和返回值

c、修饰成员函数


#.static有什么作用

a、在函数体,修饰变量,static变量可保存值不会因为函数调用而丢失

b、在模块内(但在函数体外),static变量可被模块内所有函数访问并保持值不变,但不能被模块外函数访问,是一个本地全局变量。

c、在模块内,static只能被模块内其他函数调用。


#.static全局变量/局部变量/函数  与 普通全局变量/局部变量/函数 的区别

a、全局变量:static作用域在当前文件(只能被初始化一次,防止在别的文件被引用)

b、局部变量:static变量只初始化一次,下次调用使用上次的值

c、函数:static函数在内存中只有一份,普通函数每调用一次都维持一份复制品。


#.C++中的static静态成员

a、静态成员变量目的:替代全局变量

b、特征:类定义前就已经分配空间,因此必须在类外面初始化

c、satic成员的引用:<类名>::<静态成员名>

d、satic属于整个类而不是某个对象,因此没有this指针,因此他只能访问类的静态数据和静态函数


#.sizeof和strlen区别

char str[] = "hellow" , sizeof(str)=strlen("hellow")+1

void *p =    malloc(100) , siezof(p) = 4


#.内联函数inline 与宏定义的区别

a.inline在编译时展开,宏在预编译时展开

b.inline函数可在编译时直接嵌入到目标代码,而宏只是做字符替换

c.inline函数会对数据类型,语法进行检测,宏不会

d.宏参数容易引起二义性


引用和指针


#.引用

a.引用在声明时就必须被初始化

b.引用时变量的别名,不需要另外开辟空间,改变引用的值就会改变变量的值

c.引用不能为空


面向对象

#.构造和析构

a.构造可重载,析构不能

b.为什么基类的析构函数是虚函数:在析构时防止只析构基类而不析构派生类的状况发生





C++面试知识点总结

标签:

原文地址:http://www.cnblogs.com/fysola/p/4814835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!