c++初阶 精讲(上)

目录

  1.命名空间

1.1命名空间简介

1.2代码示例:

1.3 注意事项

2.c++输入输出

3.参数问题

3.1 C语言c++参数对比

3.2缺省参数

3.2.1全缺省

代码实例

3.2.2 半缺省

 代码示例

4.函数重载

4.1c++函数重载的定义

4.2函数重载的作用

4.3c++函数重载的原理

4.4为什么C语言不能函数重载

5引用 

         5.1  C语言中我们学过两种传参方法 按值传参 和  按指针传参

引用简介

5.2 引用的特点

5.3引用和指针的区别

5.4使用引用时的注意事项

5.5引用的重要使用场景 函数参数    和 函数返回值。

5.6 几种传参效率的对比   


  1.命名空间

1.1命名空间简介

1.命名空间随标准C++而引入,相当于一个灵活的文件域(全局域),以关键字namespace开头给其起个名字,并用大括号把定义区域括起来(声明块)。

using namespace name{

           变量;

           函数;

          .....

}


2.在域外使用域内成员时,需要加上命名空间名作为前缀,再加上域操作符“::”,可以使用嵌套定义。

命名空间name::命名空间内变量name


3.如果在关键字namespace之前使用using,就不必使用限定修饰名,即可以一次性使命名空间中所有成员都可以直接被使用。

using namespace 命名空间name;


4.标准C++库中所有组件都在std的命名空间中声明和定义的,在标准C++平台调用如下语句


using namespace std;

1.2代码示例:

//0.定义命名空间
namespace Name
{
	//1.定义变量
	int rand = 10;
	//2.定义函数
	int Add(int left, int right){

		return left + right;
	}
     //3.自定义类型 结构体类型
	struct ListNode
	{
		struct ListNode* next;
		int data;
	};  //这个ListNode 是类型 所以要加;     实验中 这里不带错误 带正确

}    // Name 是命名空间的名字,所以不用加;   实验中 这里带不带都正确
//2.命名空间可以嵌套命名空间.M嵌套在N里面
namespace N
{
	int a = 10;
	int b = 0;
	int Sub(int left, int right){

		return left - right;

	}
	namespace M
	{
		int c = 0;
		int d = 0;
		int Sub(int left, int right){

			return left - right;
		}

	}

}

//3.在一个工程中,可以定义相同名称的命名空间
namespace A
{
	int Div(int left, int right){
		if (right == 0)
			exit(0);
		return left / right;
	}
}
namespace A
{
	int a = 10;
	int Sub(int left, int right){

		return left - right;

	}
}

//在使用时,相同命名空间名字的内容会合并在一起。
相当于
namespace A{
     int Div(int left,int right){
		 if (right == 0)
			exit(0);
		return left / right;
	}

     int a = 10;
	 int Sub(int left, int right){

		return left - right;


}

1.3 注意事项

如果要多次使用一个命名空间N里的变量a,每次写 N::a 比较麻烦,采用using  N :: a;这样在后面使用的时候就可以直接写a;(注意:这样就相当于把N里面的a变成该文件中的全局变量a,如果该文件中本来就有定义全局变量a,就会出现重定义,发生错误。所以在使用using N::a 时,一定确保文件里面没有全局变量a)。

  using N::a; 可以用这种方法设置 变量  之后直接写a   但是如果需要使用的变量太多还是特别烦。
  using N::Add; 可以用这种方法设置 函数 之后直接写Add 但是如果需要使用的函数太多还是烦。
  using namespace N; 优点他使用特别方便,N里面的内容都可以直接使用 ,但是可能会造成大量冲突。如果遇到冲突,那么就恢复前面那个样子 using  N:: a; 单独写。



 int a= 10;
 int main(){
     
		int a = 30;
        // 打印主函数内a 变量
		printf("%d\n", a);
		// 打印全局变量a
		printf("%d\n", ::a); //:: 全局变量操作符

		return 0;
	}


    using N::a;   
    using N::Add;
    using manespace N; 

     int main(){

		int a = 30;
		printf("%d\n", a);//30
		//打印命名空间N中的a
		printf("%d\n", N::a);
		//使用命名空间里面的函数
		N::Add(10, 20);
		//多次打印命名空间N中的a 
		printf("%d\n", N::a); //这样写太麻烦了
        printf("%d\n", N::Add);// 这样写太麻烦了
        printf("%d\n", Add); //直接写这个就可以
		printf("%d\n", a); //直接写这个就可以
		system("pause");

		return 0;
	}

2.c++输入输出

  1. 使用输入和输出需要头文件iostream;
    #include<iostream>
  2. 输入 cin>> a>>endl;
    cin>>"输入a的值为:" >>endl;
  3. 输出 cout<<a<<endl;
    cout<<"输出a的值为:" << a <<endl;

3.参数问题

3.1 C语言c++参数对比

1.C语言中一个函数如果没有明确给出返回值,则返回值是int型。c++里面如果函数没有返回值,必须写上void,否则会报错。 (C语言更加严谨)

2.C语言中函数如果没有明确指明参数时,调用时可以传递多个参数,类似于不定参数类型函数。c++中函数如果没有参数,那么在调用时也不能传递任何参数。(因为c++有严格的参数类型检测)。

3.void name (void){ };  C语言中如果调用这个函数时,往里面传参,就会出现错误。(因为此时已经明确指明这个函数的参数类型是void)。

3.2缺省参数

  1. 缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用函数时,如果没有指定实参则采用该默认值,否者使用指定的实参。

3.2.1全缺省

全缺省:全缺省参数所有参数都有默认值,如果没有手动传参,那么编译器会使用默认参数列表中的参数。但是这里值得注意的是,如果传参的时候只传了部分参数,那么该值会被从左至右匹配。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值