C与C++的区别
答:C是结构化语言,重点在于算法和数据结构。
C++是面向对象的语言。首先要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题。
最大的区别在于,解决问题的思想方法不一样。
对C++三大特性的理解
答:C++三大特性是封装,继承和多态。
封装可以隐藏实现细节,使得代码模块化,增加代码的可复用性和可维护性。
继承可以扩展已存在的代码模块,封装和继承的目的都是为了代码重用,增加代码的复用性。
多态,一个接口,多种方法。是为了实现接口重用。增加代码的可扩充性。
const与define
答:define只是用来做文本替换,他的生命周期止于编译器,存在于程序的代码段,在实际程序中只是一个常数,一个命令的参数,没有实际的存在。
const常量存在于程序的数据段,并在堆栈分配了空间。他在程序中存在并且可以被调用及传递。
const常量有数据类型,宏常量没有数据类型,编译器可以对const常量进行类型安全检查。
C++中const的作用
答:const用于定义常量,编译器可以对其进行数据静态类型安全检查。
const修饰函数形式参数,防止传递引用参数时参数被改变
const修饰函数返回至
const修饰类的成员函数
static的作用
答:静态变量,在函数体内,函数调用过程中维持值不变
在模块内,函数体外,静态变量可以被模块内的所有函数访问,但不能被模块外的函数访问,是一个本地的全局变量。
静态函数只能被同一模块的其他函数调用
static变量与普通变量的区别
答:static全局变量只初始化一次,防止在其他文件单元中被引用。
静态局部变量只初始化一次,下一次依据上一次结果值。
静态函数在内存中只有一份,普通函数在被调用时维持一个拷贝。
sizeof与strlen的区别
答:strlen是一个函数,sizeof是关键字
sizeof操作符的结果类型是unsigned int
sizeof可以用类型做参数,strlen只能用char*做参数
数组做sizeof参数不退化,传给strlen数组降级
sizeof在编译时计算,strlen在运行时计算
sizeof参数如果是变量名可以不加括号
内联函数与宏定义的区别
答:内联函数在编译时展开,宏定义在预编译时展开
编译时,内联函数做代码嵌入,宏定义做文本替换
内联函数可以完成类型检测,语句是否正确等编译功能,宏不具备
内联函数是函数,宏不是函数
宏定义会有参数二义性问题。
指针常量与常量指针
答:常量指针就是指向常量的指针,他所指向的地址内容是不可修改的
指针常量就是指针的常量,它是不可修改地址的指针,但是可以对它指向的内容进行修改