c/c++知识点4

1.什么时候要用到虚析构函数  

在父类成员函数存在虚函数时 析构函数最好选择虚析构 原因:子类可能重写父类方法 子类可能存在空间的申请 为防止此时需要父类帮忙清理 则需要将父类析构函数设置为虚析构

2.c++类型转换 如下常用的两种:
static_cast 静态类型转换
static_cast<目标类型>(标识符)
所谓的静态,即在编译期内即可决定其类型的转换,用的也是最多的一种。

dynamic_cast 子类与父类之间的多态类型准换
dynamic_cast<目标类型>(标识符)
用于多态中父子类之间的多态转换

3.内存对齐 内存对齐不光是可以按照最大值去对齐 也可以进行设置 如下:
设置对齐参数可在结构体struct之前加上#pragma pack(对齐数),在struct之后加上#pragma pack;便可以设置对齐参数。 
对齐参数不能任意设置,只能是内置类型已有的字节数,如:char(1)、short(2),int(4),double(8)…不能是3,5…任意数。

4.内联函数与宏的区别    

首先说相同点:都是替换,节省时间,方便了程序

不同点:宏是在编译器替换,而内联函数是在函数调用时替换

宏没有类型检查,不如用const,而内联函数可以存在类型检查

内联函数的调用比普通函数快,因为其不用通过函数名称找到函数地址,进而调用程序,而是直接代码段的替换

内联函数是以空间换时间,内联函数一般要求函数不经常调用、且不复杂的代码,例如大的循环和递归则不适用,若是此时调用这种类型的内联函数,系统则会按照正常的函数形式去调用。

注:在类中,h文件中的函数声明且带有函数体,即函数的定义与声明同时存在于h文件中的时候,此时系统会默认其为内联函数

5.指针函数和函数指针 :前者是函数,返回值是指针类型。后者是指针,指向的是一个函数

数组指针和指针数组:前者是指针,指向一个数组。后者是一个数组,数组中装载的是指针

6.模板:函数模板 类模板

函数模板的简单应用
#include<iostream>
using namespace std;
template<typename T>//定义函数模板,T为类型参数; 
T cmin(T a,T b)//函数的返回类型和形参类型;
{    
T min=a;//保存最大的变量;     
if(a>b)    
{        
min=b;    
}    
return min;
}

int main()
{    
int a,b;    
cin>>a>>b;    
cout<<"较小的值是:"<<cmin(a,b)<<endl;    
return 0;
}

7.栈和堆的区别:
    管理方式:前者由编译器管理 后者有程序员控制
    大小限制:前者有限制1M到2M,可以去设置 后者最大4G,除去1G内核空间,大约能剩2.9G
    能否产生碎片:前者不会因为其先进后出 后者会 因为调用了操作符或者函数释放空间
    分配方式:前者 由编译器控制 后者由人管理
    分配效率:编译器提供前者支持效率高 而后者只是由几个函数来获取和释放

8.成员变量的初始化~~~~普通变量、static静态变量(编译期初始化)、const常量(只能在初始化列表中进行初始化)、引用型变量(只能在初始化列表中进行初始化)

9.输出程序本身代码 system("type 源.cpp");

10.volatile 修饰的变量是随时都可能会变化的 注:定义这个变量说明,这个变量可能会被意想不到的改变

11.两个队列实现栈 两个栈实现队列 实际上就是两个容器的数据“倒腾” 来实现第三个容器的性质问题

 

 

 

 

 

 

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值