C++入门 “命名空间”,“C++输入与输出”,“缺省参数”,“函数重载”

本文介绍了C++编程中的关键概念,包括命名空间的作用与用法、std命名空间在I/O中的应用,缺省参数的分类以及函数重载的原理。特别强调了在实际项目中的命名空间使用习惯和C++与C的区别。
摘要由CSDN通过智能技术生成

1.命名空间

命名空间是一种区分不同库中相同的名称的函数,类,变量等概念。

1.1 命名空间的定义

  1. 定义命名空间,要使用到namespace关键字,接上命名空间的名称。
    例如:
namespace bit
{
   int a ;
   int Add(int a,int b)
   {
   return a+b ;
   }
}
  1. 命名空间之间还能相互嵌套
namespace bit 
{
   int a ;
   int Add(int a, int b)
   {
   return a+b ;
   }
  namespace bit1 
  {
   int b;
   int c;
    int Sub(int a, int b)
   {
   return a-b ;
   }
  }
}
  1. 同一个项目中可以存在一个多个同名的命名空间 ,编译器最后将会合成在同一个命名空间中。
    一个命名空间相当于定义了新的作用域,命名空间中的内容仅限于该命名空间中。

1.2 命名空间的用法

命名空间有三中用法

  1. 命名空间名称加上作用域限定符号
int main()
{
    printf("%d\n",bit::a );
    return 0;
}
  1. 使用using将命名空间中的成员引入

using bit::a;

int main()	
{
     printf("%d\n",a);
    return 0;
}
  1. 使用using namespace 将整个命名空间引入(建议只在练习中使用)
using namespace bit;
int main()	
{
   printf("%d\n",a);
    Add(10,20);
   return 0;
}

2. C++输入与输出

#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
    int b,c;
    cout<<"Hello world!!!"<<endl;
    cin >> b >> c ;
return 0;
}
  1. 使用cout 标准输出对想和cin标准输入对象,需要包含头文件 和命名空间std的使用。
  2. cout 和cin 都是全局流对象 ,endl (endline)表示换行。
  3. << 是流插入运算符 ,>> 是流提取运算符。
  4. 使用c++输入输出可以自动识别变量,十分方便。注:浮点数float 在使用C++输入输出时如是要精确小数点位比较麻烦,建议还是使用printf。

std 命名空间的使用习惯

  1. std是C++的标准命名空间,在平时练习中可以使用using namespace std ;引入std,这样十分方便。
  2. 但是在项目开发中,使用using namespace std 标准命名空间就完全暴露出来,就会与命名空间中跟库中的变量、类型、函数等重名,就存在冲突。所以在实战开发中建议使用using std::cout 或则 是std::cout展开库的方式。

3. 缺省参数

概念: 缺省参数是声明或者定义函数时为函数的参数的提供一个缺省值,在调用该函数时,若是没有上传该函数的实参则采用形参的缺省值。
全缺省参数

void func(int a =100)
{
    cout << a << endl;
}

在这里插入图片描述
在没有传参数时,默认使用形参的缺省值。
在这里插入图片描述
传参数时,使用实参。

缺省参数的分类

全缺省参数

void func(int a =100, int b = 200)
{
    cout << a << b << endl;
}

半缺省参数

void func(int a,int b =100)
{
    cout << a << b << endl;
}

注意:

  1. 半缺省参数缺省值必须是从右往左依次给出,中间不能有隔断。
  2. 缺省参数不能同时在声明或定于中出现。
  3. 缺省参数的值必须是常量或者全局变量。
  4. C语言不支持

如果有声明和定义分开,缺省参数可以放在声明。因为在编译阶段有函数声明就可以检查缺省参数语法合不合规。

4. 函数重载

C++中使用函数重载,相同的函数名在同时调用时,会自动识别同名函数调用的类型。

C语言是不支持函数的重载的,C++语言允许同名函数,要求:函数名相同,参数不相同,构成函数重载。

  1. 参数的类型的不同
int Add(int left, int right)
{
 cout << "int Add(int left, int right)" << endl;
 return left + right;
}
double Add(double left, double right)
{
 cout << "double Add(double left, double right)" << endl;
 return left + right;
}
  1. 参数个数不同
void f()
{
 cout << "f()" << endl;
}
void f(int a)
{
 cout << "f(int a)" << endl;
}
  1. 参数类型顺序不同
void f(int a, char b)
{
 cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
 cout << "f(char b, int a)" << endl;
}

函数重载的原理

C语言是不支持重载的,原因是在链接时直接用函数名去找地址,有同名函数区分不开。

C++支持函数重载,是因为引入了函数名修饰规则,名字中引入参数类型,在不同的编译器下函数名修饰规则不同。
window下的函数名修饰规则:

//stack.h
#pragma once
#include<iostream>

double Add(double left, double right);
void Add(int left, int right);


//test.cpp
int main()
{
	Add(1, 2);
	Add(1.2, 2.1);

	return 0;
}

在这里插入图片描述
我们可以发现在在vs编译器下相同的函数名的函数名修饰不同。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值