基础C++知识点

1、using namespace std;

1、namespace 是命名空间,是一个域,他的作用是数据隔离。std是C++提供的一个命名空间,这里包含了所有的C++库函数。
2、访问命名空间有两种方式:
1) using namespace std; //这种方式会将命名空间中的所有特定的用法给展开,这样类似于 cout/cin 这样的特定的输入/输出语句就不能再被使用,就像是关键字一样。但是这样也可以很方便的使用的。
2) std :: cout; //这种方式是利用域访问符进行访问。比较麻烦,每一个在这个命名空间的函数的使用都需要这样处理。
3、其中,命名空间可以嵌套定义

2、头文件<iostream>

不同于C语言的头文件定义,C++的头文件现在是不在后面加上 .h。

3、重载

1、重载定义:在同一个作用域,同一函数名在不同的函数形参下可以存在,返回值可以相同可以不同。形参的不同指的是数量的不同或者类型的不同。
2、仅仅只有返回值不同是不能够构成重载的。
3、C++是利用函数的命名修饰规则来实现重载功能,见下面的例子:

void Add1(int a, int b);    //_Z4Add1ii
void Add1(char a, int b);   //_Z4Add1ci

Linux下用g++ -o Add text.c编译,然后用 objdump -S Add查看其源代码的汇编代码,可以看到两者的差别
root用户下:yum install gcc gcc-c++装g++编译器
这里写图片描述
4、重载的时候,利用到一个缺省参数
1)全缺省

int Add(int a = 10, int b = 5)
{
    return a + b;
}

调用函数的时候:
Add( ) => 30
Add(5) =>25
Add(2, 3)=>5
Add( ,5) => 错误的使用

2)半缺省

int Add(int a, int b = 30);  //正确
int Add(int a = 10, int b); //错误

4、指针和引用

1、引用的定义:引用不是一个新的变量,而是变量名的别名

int a = 10;
int& b = a;

2、const在引用时候的作用

const int a = 10;
int& b = a;  //错误,因为a 是不可修改的,但是b 却是可以修改的类型
const int& b = a;  //正确
int c = 10;
double d = 20;
int& e = d;  //错误,因为d 是double类型,将它转化为 int 需要一个临时变量的调用,而这个临时变量是常量类型
const int& e = d;  //正确

3、引用的几个点
1)引用作为参数传递的时候,可以直接改变原来的变量的值;这是因为引用和原变量的地址是一致的。这种做法类似于将指针的地址进行了传递
2)引用可以提高效率,类似于地址传参,不需要将所有的数据进行临时拷贝
3)当我们不想修改函数参数的值时,一般用const修饰引用

4、引用作为返回值

int& Add(int a, int b)
{
    int ret = a + b; //(static int ret = a + b;)这样修改,改程序就没有问题
    return ret;
}

int main()
{
    int a = 3;
    int b = 4;
    int& c = Add(a, b);
    cout << c << endl; // 7 (已越界)  //若修改,未越界
    Add(10, 15);
    cout << c << endl;  // 25  //若修改了,输出 7
}

int& =>此时返回ret的是别名,用int& c接收,但ret 是临时变量,出了作用域就被销毁了
第一次打印C的时候,C的地址,即ret 的地址已经返回个操作系统,但是因为未修改,所以依旧输出7。第二次,就修改了,所以输出了25。

若要返回一个临时变量的值,就不返回其引用。若要返回其作用域仍存在(静态变量,传进的变量值),并且当数据较大的时候,用引用较为合适。

5、指针和引用
1)引用只能初始化一次,并且必须初始化。
2)sizeof,对指针是 4 或 8 ,对应 32位机器,64位机器;对引用是与其类型大小一致
3)引用做参数的时候,一般不需要判空,较为安全
4)引用在语法层面,没有开辟空间,指针有开辟空间。但是在底层的汇编代码,两者其实都是开辟了空间的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值