标签:
#.宏定义求最大值
#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.为什么基类的析构函数是虚函数:在析构时防止只析构基类而不析构派生类的状况发生
标签:
原文地址:http://www.cnblogs.com/fysola/p/4814835.html