嵌入式学习小组
直播中

李泽坚

7年用户 1342经验值
私信 关注

什么是函数重载?如何看待引用和指针

如何看待new/delete、malloc/free ?
如何看待引用和指针 ?
什么是函数重载?

回帖(1)

张杰

2021-12-24 13:46:19
new/delete是运算符,使用时,不用加头文件;malloc/free是标准 C库函数,需要加头文件。


  • new的返回值是特定数据类型,不需要强制类型转换;malloc的返回值是void*类型,需要强制类型转换。
  • new申请内存时,已经确定了内存中的数据类型,会做数据类型检查。
  • new只需确定元素类型和个数;malloc需要手动计算申请内存大小。
  • free的入参是内存的首地址;delete释放数组时必须加 [ ] 。
  • new/delete一个对象时会分别调用该对象的构造函数/析构函数;malloc/free没有这个功能。

int *p=new int; delete p;int *q=new [5];delete [] q; 如何看待内联函数、宏定义 ?



  • 内联函数是在程序编译过程中替换;宏是在预处理阶段替换。
  • 内联函数会进行类型检查;宏不会进行类型检查。
  • inline内联函数只是一个建议,不一定成功。





  • 指针占4字节内存空间;引用不占用内存空间,引用和被引用变量共同使用同一块内存空间。
  • 指针可以改变指向;引用一旦初始化完成不能变成别的变量的引用。
  • 指针可以不被初始化;引用必须被初始化。
  • 可以有void类型的指针;不能有void类型的引用。
  • 不能声明引用数组;可以声明指针数组。
  • 可以有二级指针;不能有二级引用。

int  b=0;int & a=b;
什么是函数重载?

函数名相同,参数个数或参数类型或顺序不同,与返回值无关。
当声明一个类时,系统默认分配哪些函数 ?



  • 默认构造函数
  • 默认析构函数
  • 拷贝构造函数
  • 赋值运算符
  • 地址运算符

怎么看待类class和结构体struct ?

struct定义类时,所有成员默认属性为public;class定义类时,所有成员默认属性为private。
linux下我们运行一个.c文件有哪些步骤?

1.预处理:(源文件)gcc -e test .c -o test.i
2. 编译:(预编译文件)gcc -s test.i -o test.s
3. 汇编:(目标文件)gcc -c tets.c -o test.o
4. 链接:(链接文件)gcc test.o -o test
举报

更多回帖

发帖
×
20
完善资料,
赚取积分