C++复习(一)

一、命名空间

解决命名冲突:假设一个程序调用多个库函数,多个库函数中的全局变量冲突了

namespace fun
{
	int a = 10;
}
namespace kun
{
	int a = 20;
}
cout<<fun::a<<endl;	//输出为10

二、输入输出流

对流的操作就是对文件的操作
cin:从键盘输入的标准输入流
cout:从屏幕输出的标准输出流
《C Primer Plus》中说,C程序处理一个流而不是直接处理文件(联想到了IO知识点)——属于进阶知识点了。

三、引用

引用:取别名,对引用的操作即对变量的操作。
int a = 10; //变量
int &b = a; //b就是a的别名

Tips: 引用和指针的区别 ?:

  1. 指针开辟空间,引用不开辟空间
  2. 指针可不初始化,引用必须初始化
  3. 指针+1是移动,引用+1是数值加一
  4. 有void*的指针,没有void类型的引用
  5. 有多级指针,无多级引用
  6. 有数组指针、函数指针,无数组引用、函数引用
  7. 指针只能指向字符串常量,引用可以是任意常量
  8. 指针可以是空指针,引用不能是空引用

四、函数重载

C++中,函数名相同(功能类似),形参(个数、类型、顺序)不同,与返回值无关的一类函数称为重载函数。
问题(1). C语言函数为啥不能同名 ?:
C语言中调用函数(函数本质即内存中一段二进制代码)时,函数名是这段二进制代码的入口,入口只能有一个,所以函数不能同名。
问题(2). C++为啥函数可以同名呢 ?:
g++编译会对函数名进行重命名
在这里插入图片描述

五、默认参数

函数声明时,形参若有初始声明值,调用时不传参使用初始值,传参则使用实参值,且定义时不写默认参数。
Tips:

  1. 默认参数设置从右至左
    void fun(int a=3,int b,int c=4); //这是错误的!!
  2. 传参从左至右

六、C++如何选择性调用C库函数(C/C++混合编程)

#include<stdio.h>

int main()
{
#ifdef __cplusplus
	printf("g++\r\n");
#else
	printf("gcc\r\n");
#endif

	return 0;
}

在这里插入图片描述

#include<stdio.h>

 int main()
{
	if(1 == sizeof('a'))
		printf("g++\r\n");
	else
		printf("gcc\r\n");

	return 0;
}

在这里插入图片描述

七、关于 new delete 运算符

new:在堆区申请内存空间,功能和malloc一样
delete:释放从堆区申请的空间,功能和free一样

Tips:

  1. 前者时运算符,后者是函数
  2. 后者需要强制转换且需要自行计算申请空间大小
int *p;
p = (int *)malloc(sizeof(int));	//malloc()之前最好memset()一下
//malloc还没有掌握其本质(挖个坑先),记得free
int *p = new int;
delete p;
//————————————————————————————————————————————————————————————
int *p = (int *)malloc(sizeof(int)*10);
int *p = new int[10];
delete int[]p;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值