60天零基础干翻C++————初识C++

命名空间

命名空间的定义

在c语言中会有下面问题
在这里插入图片描述
上述代码中,全局变量rand 可能会命名冲突,如下图
在这里插入图片描述
在这里插入图片描述
此时编译失败,全局变量rand和stdlib.h发生命名冲突。冲突可能有两种:

  1. 与系统库冲突
  2. 与其他人冲突
    这就是c语言的一个不足,所以在c++中引入了命名空间。
    引入命名空间后又出现了新的问题:
    在这里插入图片描述
    输出结果不是0,似乎是个随机数。但是他并不是随机数,他是库中函数rand的打印,那么怎么才能打印命名空间域中的rand呢? 就需要使用命名空间限定符
    在这里插入图片描述
    使用了命名空间作用符 elk::rand,就可以访问命名空间内部。

命名空间的使用

  1. 命名空间的全部展开
using namespace std;

全部展可能会有以下冲突问题:
在这里插入图片描述
此时同时展开 elk bin出现了 命名冲突,所以在使用展开时,在工程中不能全部展开。

输入输出流

在c语言中 printf的使用很麻烦。在c++中引入了 cout cin 极大的加速了编程效率。在后面我们会对cout,cin进行深入探讨。下面演示如何使用:

  1. cout的输出 cout可以看做终端
    在这里插入图片描述
  2. cin 可以看做从终端输入
    在这里插入图片描述

缺省参数

缺省参数是声明函数和参数,提前为函数参数赋值一个参数。
在这里插入图片描述
缺省参数注意事项:

  1. 缺省参数从左往右依次给出
  2. 调用缺省函数时必须从左往右连续填充。

引用

引用定义

引用不是重新定义一个变量,而是给变量取一个别名。

  1. 一个变量可以有多个别名,一个别名只能对应一个变量
  2. 引用不是指针。
    在这里插入图片描述

常量的引用

常量的引用必须是权限的缩小,如下面程序:
在这里插入图片描述
在类型转换中,显示类型转换中:
在这里插入图片描述
此代码就会报错,原因如下:
在这里插入图片描述
将代码修改为具有const性质的:
在这里插入图片描述

引用的使用场景

做函数参数

  1. 引用的优点之一是可以避免拷贝形参。
#include <time.h>

using namespace std;

struct A {
    int a[10000]; };
void TestFunc1(A a) {
   }
void TestFunc2(A& a) {
   }
void TestRefAndValue()
{
   
	A a{
   };
	// 以值作为函数参数
	size_t begin1 = clock();
	for (size_t i = 0; i < 10000; ++i)
		TestFunc1(a);
	size_t end1 = clock();
	// 以引用作为函数参数
	size_t begin2 = clock();
	for (size_t i = 0; i < 10000; ++i)
		TestFunc2(a);
	size_t end2 = clock();
	// 分别计算两个函数运行结束后的时间
	cout << "TestFunc1(A)-time:" << end1 - begin1 << endl;
	cout << "TestFunc2(A&)-time:" << end2 - begin2 << endl;
}

int main()
{
   
	TestRefAndValue();
	return 0;
}

运行结果如下:
在这里插入图片描述

引用做返回值

引用做返回值容易引起野引用问题。

int& Add(int a, int b)
{
   
int c = a + b;
return c;
}
int main()
{
   
int& ret = Add(1, 2);
Add(3, 4);
cout << "Add(1, 2) is :"<< ret <<endl;
return 0;
}

因为c是临时变量,临时变量在出函数栈帧会自动释放。所以,不能还回临时变量。

相关推荐

  1. 0基础学习C++------C++

    2024-01-06 23:20:02       36 阅读
  2. c++之基础认识

    2024-01-06 23:20:02       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 23:20:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 23:20:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 23:20:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 23:20:02       18 阅读

热门阅读

  1. nodejs01

    nodejs01

    2024-01-06 23:20:02      36 阅读
  2. vue 异步加载组件

    2024-01-06 23:20:02       38 阅读
  3. Copilot在IDEA中的应用:提升编码效率的得力助手

    2024-01-06 23:20:02       42 阅读
  4. Vivado link synplify edf 和 xilinx ip或者原语

    2024-01-06 23:20:02       41 阅读
  5. 地理空间分析1——入门Python地理空间分析

    2024-01-06 23:20:02       37 阅读
  6. Vue3-38-路由-路由的懒加载

    2024-01-06 23:20:02       37 阅读