1 static 在C、C++中的作用
对变量: a 静态区域,初始化为0; b 在程序刚开始运行时就完成出初始化,也是唯一一次初始化。控制变量的可见范围。保持变量内容持久。
对变量、函数(主要):这是与全局变量的差别,“隐藏”,不同文件中,使用相同函数名,不会发生冲突;例如,A文件中函数名加了static,则B文件看不到。
2 sizeof strlen区别
举例说明:
sizeof(“hello”)=6;strlen(“hello”)=5;
char*ss=“0123456789”;
sizeof(ss)=4;//单位指针长度
sizeof(*ss)=1;//首字符0的长度
strlen(ss)=10;
char str[20]=“0123456789”;
sizeof(str)=20;//整个数组的大小
strlen(str)=10;//字符串长度
3 指针 引用
a 指针:编译器为其分配一个4字节(32位机器)的内存
引用:不占任何内存,与绑定对象共享内存空间
b 指针:初始化以后可以改变指向对象,间接访问
引用:定义时必须初始化,使用后不能再改变
c 如果pa是指针,*pa是引用
d指针有const,引用没有const
e指针可以为空,引用不可为空
f sizeof(指针)是4,sizeof(引用)是变量大小
g 自增时意义不同
h 指针不安全,引用安全。
4 虚函数
基类的指针,指向不同派生类的对象时。基类调用其虚成员函数,真正指向对象的成员函数。是多态的基础。是覆盖。
例如,B0 p; p=&B1; p+&B2; 如果不是虚函数,执行结果是B0,B0,B0;有虚函数,执行结果是B0,B1,B2。
5 栈,堆
栈区:编译器分配释放,参数值,局部变量值。类似数据结构中的栈。
堆区:程序员自己管理分配释放。类似数据结构中的链表。
6 new与mallco区别
mallco是函数 void 型,
new是操作符,返回new的类型,执行构造析构函数。
7 内联函数
首先内联函数必须精简。不能用循环or开关语句。定义必须在第一次调用之前。
定义在函数体内的函数。可以像宏一样展开,不用压栈。解决了程序中函数调用的效率问题。
宏在++i时会产生二义性。内联函数不会。
宏是在预处理器中,内联函数是在编译器中。
8 重载
C++中多态的一种表现形式。函数名相同,但参数不同。
C++中多态:虚函数,模板,重载,转换。
9 #include <> ""区别
〈〉是在编译器类库路径下查找。“”是在自己程序目录下查找
10 友元
友元不是成员函数。但是它可以访问类中的私有成员。作用:可以提高程序的运行效率。缺点:破坏了封装性和隐藏性。
11 类/结构 区别
类:堆上分配,有构造+析构函数,可继承、被继承。
结构:栈上分配,速度快,但资源有限。
12 类/结构 访问权
类中的成员变量是私有
结构中的成员变量是公有,可被任何函数使用。