【C++专栏】C++入门 | 命名空间、输入输出、缺省参数

简介: 【C++专栏】C++入门 | 命名空间、输入输出、缺省参数


  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家 点赞👍收藏⭐评论✍

C++入门 | 命名空间、输入输出、缺省参数

文章编号:C++入门 / 01



一、命名空间

C++命名空间是用来避免命名冲突的一种机制。当我们在一个程序中使用多个库或者模块时,可能会出现相同的函数名变量名等,这样会导致命名冲突。通过使用命名空间,我们可以将这些函数、变量等包裹在不同的命名空间中,从而避免命名冲突。

在C语言中没有办法解决类似命名冲突的问题,在C++中提出namespace来解决。

1. std命名空间的使用惯例

  1. 在平时练习中,直接 using namespace std ;这样在日常进行代码练习中比较方便。
  2. 但是将 using namespace std ;展开,在多项目开发中可能在定义的类型库里的类型名/对象/函数冲突,就会产生问题。
  3. 建议在项目开发中,使用std::cout这种方式指定命名空间或者使用using std::cout的方式只展开常用的库对象/类型。

2. 如何定义命名空间?

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后加上一对 { }

中既为命名空间的成员。

//DuckBro是命名空间的名字,一般在开发中用项目名字做命名空间名
//在这里用于练习,将命名取名为DuckBro,命名有意义就行。
//1.简单的命名空间
namespace DuckBro
{
  int a = 18;
  int b = 17;
  int add(int a1,int b1)
  {
    return a1 + b1;
  }
}
//2.命名空间可以嵌套
namespace Duck1
{
  int a = 18;
  int b = 17;
  int add(int a1, int b1)
  {
    return a1 + b1;
  }
  namespace Duck2
  {
    int a = 18;
    int b = 17;
    int add(int a1, int b1)
    {
      return a1 + b1;
    }
  }
}

3. 命名空间该如何使用?

在命名空间中的成员应该如何使用?

命名空间的使用有以下三种方式:

  • 加命名空间名称及作用域限定符
int main()
{
    printf("%d\n", N::a);
    return 0;    
}
  • 使用using将命名空间中某个成员引入
using N::b;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    return 0;    
}
  • 使用using namespace 命名空间名称 引入
using namespce N;
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    Add(10, 20);
    return 0;    
}

二、C++的输入&输出

  1. 在使用C++中的cincout使用,要必须包含头文件<iostream>,以及按命名空间使用方法std.
  2. cout和cin是全局的流对象,endl是特殊的C++符号,用于换行输出,同时endl也包含在头文件<iostream>
  3. <<是流插入运算符,>>是流提取运算符。
  4. 在C++中使用cout/cin相较于C语言中的printf/scanf更加方便,C++的输入输出可以自动识别变量类型,无需像C语言时需要手动变换控制格式。

1. 标准输出对象(cout & <<)

#include<iostream>
using namespace std;
int main()
{
  int a;
  double b;
  a = 10;
  b = 10.12;
  //可以自动识别变量的类型
  cout << a<<endl;
  cout << b << endl;
  return 0;
}

输出结果:

2. 标准输入对象(cin & >>)

#include<iostream>
using namespace std;
int main()
{
  int a;
  double b;
  cin >> a;
  cin >> b;
  cout << a << endl << b;
  return 0;
}

输出结果:


三、缺省参数

1. 缺省参数概念

缺省参数是指在函数定义时,为参数指定了默认值。在调用该函数时,如果没有传入对应的参数值,则会使用默认值代替。使用缺省参数可以简化函数调用,使代码更加灵活。

void Func(int a = 0)
{
  cout << "Func:" << a << endl;
}
int main()
{
  Func(); // 没有传参时,使用参数的默认值
  Func(10); // 传参时,使用指定的实参
  return 0;
}

2. 缺省参数分类

  • 全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }
  • 半缺省参数
  1. 半缺省参数必须从右往左依次来给出,不能间隔着给!!!
  2. 缺省参数不能在函数声明和定义中同时出现
  3. 缺省值必须是常量或者全局变量
  4. C语言不支持(编译器不支持)
void Func(int a, int b = 10, int c = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }

目录
相关文章
|
2天前
|
存储 分布式计算 编译器
C++入门基础2
本内容主要讲解C++中的引用、inline函数和nullptr。引用是变量的别名,与原变量共享内存,定义时需初始化且不可更改指向对象,适用于传参和返回值以提高效率;const引用可增强代码灵活性。Inline函数通过展开提高效率,但是否展开由编译器决定,不建议分离声明与定义。Nullptr用于指针赋空,取代C语言中的NULL。最后鼓励持续学习,精进技能,提升竞争力。
|
1月前
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
5月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
53 0
|
5月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
60 0
|
1月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
10天前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
37 16
|
2天前
|
编译器 C++
类和对象(中 )C++
本文详细讲解了C++中的默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载等内容。重点分析了各函数的特点、使用场景及相互关系,如构造函数的主要任务是初始化对象,而非创建空间;析构函数用于清理资源;拷贝构造与赋值运算符的区别在于前者用于创建新对象,后者用于已存在的对象赋值。同时,文章还探讨了运算符重载的规则及其应用场景,并通过实例加深理解。最后强调,若类中存在资源管理,需显式定义拷贝构造和赋值运算符以避免浅拷贝问题。
|
2天前
|
存储 编译器 C++
类和对象(上)(C++)
本篇内容主要讲解了C++中类的相关知识,包括类的定义、实例化及this指针的作用。详细说明了类的定义格式、成员函数默认为inline、访问限定符(public、protected、private)的使用规则,以及class与struct的区别。同时分析了类实例化的概念,对象大小的计算规则和内存对齐原则。最后介绍了this指针的工作机制,解释了成员函数如何通过隐含的this指针区分不同对象的数据。这些知识点帮助我们更好地理解C++中类的封装性和对象的实现原理。
|
13天前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
58 6

热门文章

最新文章