C++ 命名空间和IO


一、命名空间

命名空间:用户自己定义的作用域

作用:对标识符的名称进行本地化,能避免冲突

1.1 命名空间的定义方式

方式一:直接使用

namespace N
{
  //变量
  //函数
}

方式二:嵌套使用

namespace N
{
  // 变量
  // 函数
  namespace N
  {
  // 变量
  // 函数
  }
}

方式三:在一个工程中,可以出现多个相同名称的命名空间

namespace N
{
  //变量1
}
namespace N
{
  //变量2
}

调用时合并两个N为一个命名空间

1.2 命名空间的成员使用方式

方式一:命名空间名::成员名

:: 作用域运算符

printf("%d\n", a);    // 直接使用,优先打印的是函数体局部的变量
printf("%d\n", ::a);  // 在变量前两添加::,则打印全局
printf("%d\n",N::a);  //打印命名空间内的变量

方式二:using N::a //全局变量

频繁使用变量名时

printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
// 在不冲突的情况下,直接使用
// 可以将a当成当前文件中的全局变量

方式三:using namespace N //N中的所有成员

当前命名空间中多成员都要在当前文件中使用

using namespace N;
// 可以将N命名空间中所有成员当成本文件中的全局变量,命名空间中的成员
// 则可以直接在当前文件中使用   缺陷:容易发生冲突。如果发生冲突,则按照方式一使用即可

二、C++中的输入与输出

C++标准库中定义的内容基本都在std的命名空间中

为了区分与C语言头文件的不同,C++中定义的头文件可以不用加.h

#include<iostream>
using namespace std;
int main()
{
  int a;
  double b;
  char c;
  cin>>a>>b>>c;
  
  cout<<"hello world"<<endl;
  cout<<"hello\n";
  cout<<10<<" "<<12.34<<'A'<<"hello world"<<endl;
  return 0;
}

C语言的函数定义不给参数,但在调用时可以传递多个参数

C++中就是语法错误

void func()
{
  printf("func()\n");
}

int main()
{
  func();
  func(10);
  func(10, 20);
  func(10, 20, 30);
  return 0;
}

三、缺省参数

3.1 缺省函数:

C++函数在定义时,可以给形参带默认值

在调用时如果用户没用传递参数,则会使用默认值

如果用户传递了实参,则使用用户传递过来的实参

void func(int a=10,int b=20)
{
  printf("%d %d\n",a,b);
}
int main()
{
  func();
  func(100);
  func(100,200);
  return 0;
}

3.2 分类:(声明位置)

全缺省函数:所有参数都有默认值

void func1(int a=10,int b=20)
{
  printf("%d %d\n",a,b);
}

 半缺省函数:部分参数具有默认值,注意:缺省值必须从右往左依次给出

void func2(int a, int b, int c = 30)
{
  printf("%d %d %d\n", a, b, c);
}

int main()
{
 func2(100, 200);
 func2(100, 200, 300);
 return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值