1.C++入门

本文详细介绍了C++编程中的基本概念,包括命名空间的使用,如何通过命名空间避免命名冲突;缺省参数的定义及其分类,全缺省和半缺省参数的区别;引用的特性,如必须初始化、不能改变引用对象等;函数重载的原理,以及内联函数的作用和效率提升。这些基础知识对于理解和编写C++代码至关重要。

目录

1.命名空间namespace

2.缺省参数

3.引用

4.函数重载

5.incline 内联函数


1.命名空间namespace

在写代码时,我们会定义很多变量和函数(方法的实现),这些都是全局变量,当代码量上去之后,我们就会面临重名的问题,命名空间的出现就是为了避免命名冲突。

1.定义命名空间使用namespace关键字,如下

namespace N1//命名空间
{
  int a;//定义变量
  int Add(int left, int right)//定义函数
  {
    return left + right;
  }
}

命名空间还可以嵌套和定义多个同名的命名空间,编译器会把它们合成

2.那定义了命名空间,我们又该如何使用命名空间呢?

namespace N
{
  int a = 1;
}

int main()
{
  printf("%d\n",a);
}//很明显,是无法直接打印的,因为无法确定a位于哪个命名空间,下面有三种方法。



//第一种方法,N是命名空间名称“::”是作用域限定符,相当于告诉主函数a在哪个命名空间
int main()
{
  printf("%d\n",N::a);
}

//第二种方法,使用using将命名空间成员导入
using N::a
int main()
{
  printf("%d\n",a);
}

//第三种方法,使用namespace命名空间名称引入(推荐多个变量时使用)
using namespace N
int main()
{
  printf("%d\n",a)
}

2.缺省参数

1.什么是缺省参数呢?

缺省参数是声明或定义时为函数的参数指定一个默认值,只有在未指定实参时使用,相当于是一个备选项。

比如我们下面实现一个打印函数:

void print(int a = 2)
{
 cout << a << end1;
}

int main()
{
  print();//这里没有传参,所以会打印出默认值2
  print(5);//打印出5
}

2.那缺省参数又如何分类呢?

分为全缺省参数半缺省参数

void print(int a= 5, int b =2, int c = 1)
{
  cout << a << end1;
  cout << b << end1; 
  cout << c << end1;
}//给所有参数a,b,c默认值,就是全缺省参数


void print(int a, int b =2, int c = 1)
{
  cout << a << end1;
  cout << b << end1; 
  cout << c << end1;
}//只给部分参数默认值,就是半缺省参数
(注意:半缺省参数必须从右向左连续给)

3.引用

引用是给已存在变量取了一个别名,它和它引用的变量共用同一块内存空间,相当于原变量的别名。定义变量需要使用&符号,如下:

void Test()
{
  int a = 5;
  int& ra = a;//ra是a的别名,两者地址是一样的
}

 特性

1.引用在定义时必须初始化

2.一个变量可以由多个引用

3.引用一旦引入一个实体,就不能引用其他实体

那引用又如何使用呢?

做参数做返回值

void Swap(int& left, int& right)//做参数

int& Count()//做返回值
{
  static int n = 0
  n++;
  //...
  return n;
}

回忆指针的概念,我们会发现指针和引用在很多地方很相似。

引用和指针的区别是什么呢?

 引用在语法概念上就是一个别名,底层实现上引用时按照指针方式来实现的。

区别:

1. 引用在定义时必须初始化,指针没有要求
2. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体
3. 没有NULL引用,但有NULL指针
4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)
5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
6. 有多级指针,但是没有多级引用
7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
8. 引用比指针使用起来相对更安全

4.函数重载

函数重载是什么呢?

C++允许在同一个作用域中几个功能类似的同名函数,它们的形参列表( 参数个数 或 类型 或 顺序 )必须不同,就构成函数重载。

int Add(int left, int right)
{
  return left + right;
}

double Add(double left, double right)//类型不同
{
  return left + right;
}

5.incline 内联函数

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,提升了程序运行的效率。像数据结构中空间复杂度概念,是一种空间换时间的做法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学c的长弓狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值