C++ 入门第一课:命名空间、IO 流、缺省参数与函数重载全解析

欢迎来到 s a y − f a l l 的文章 欢迎来到say-fall的文章 欢迎来到say−fall的文章

🌈 say-fall:个人主页 🚀 专栏:《手把手教你学会C++》 | 《C语言从零开始到精通》 | 《数据结构与算法》 | 《小游戏与项目》 💪 格言:做好你自己,才能吸引更多人,与他们共赢,这才是最好的成长方式。


前言

今天起我们将开启全新专栏《手把手教你学会C++》,本专栏将从零基础循序渐进地讲解C++。无需担心晦涩的语法和抽象概念,我会从C语言基础语法逐步过渡到C++,详细拆解每一行代码。今天我们先来认识C++与C语言的第一课差异。


文章目录

  • 前言
  • 正文
    • 一、命名空间
      • [1. 命名空间的由来](#1. 命名空间的由来)
      • [2. 命名空间的概念](#2. 命名空间的概念)
      • [3. 命名空间的使用](#3. 命名空间的使用)
      • [4. 注意事项](#4. 注意事项)
    • 二、C++输入输出流
      • [1. 标准输入输出流头文件](#1. 标准输入输出流头文件)
      • [2. 标准输入输出流对象](#2. 标准输入输出流对象)
      • [3. 使用方法](#3. 使用方法)
    • 三、缺省参数
    • 四、函数重载

正文

一、命名空间

1. 命名空间的由来

在团队协作开发时,不同程序员可能会定义相同的函数名或变量名。如果使用C语言,就需要一方修改代码,这很不方便。

C语言虽然具有域的概念(全局域、局部域、函数原型和枚举/结构体/联合的成员域),但无法解决多人协作时的命名冲突问题。这启发了C++创始人:何不创建独立的域,让每个人将自己的函数或变量封装其中,使用时只需调用或展开对应的域?

于是,命名空间的概念应运而生。

2. 命名空间的概念

  • 命名空间(Namespace)是一种封装机制,用于组织代码元素(变量、函数、类等),避免命名冲突并提供更好的代码组织方式。本质上它是一个作用域容器,为其中的标识符提供限定作用域。

3. 命名空间的使用

  • 创建命名空间
cpp 复制代码
namespace cpp {
    void say_fall() {
        // 函数定义
    }
}
  • 域作用限定符::

    默认情况下会调用全局域和局部域

  • 三种使用方式

  1. 直接调用
cpp 复制代码
cpp::say_fall(); // 直接调用函数
  1. 使用using展开特定名称
cpp 复制代码
using namespace cpp::say_fall;

此后可直接使用say_fall(),无需cpp::前缀

  1. 展开整个命名空间
cpp 复制代码
using namespace cpp;

4. 注意事项

  • 支持嵌套使用
  • 同名命名空间会自动合并
  • C++标准库使用std命名空间

二、C++输入输出流

1. 标准输入输出流头文件

<iostream>

注:C++中C语言头文件改为c前缀并去掉.h,如<stdio.h>变为<cstdio>

2. 标准输入输出流对象

  • cin
    istream类对象,面向窄字符的标准输入流,功能类似C语言的scanf

  • cout
    ostream类对象,面向窄字符的标准输出流,功能类似C语言的printf

  • endl

    一个函数,输出时相当于插入换行符并刷新缓冲区

3. 使用方法

cpp 复制代码
cout << " " << endl;
cin >> " " >> " ";
  • 优势:能自动识别数据类型

  • 注意事项:

  1. <<>>是二元操作符,每次只能有一个操作对象(除cin/cout外)
  2. 格式化输出可使用printf或C++自带的格式化函数(后者较复杂)
  • 提高I/O效率(适用于竞赛题等大量输入场景):
cpp 复制代码
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);

三、缺省参数

缺省参数(Default Parameters)指在函数定义时为参数指定默认值。调用时若未提供实参,则使用默认值。

  • 定义/声明函数时,形参可赋默认值(必须是常量)

  • 注意:只能在定义或声明之一处指定缺省参数,否则会报错

  • 分类:

    • 全缺省:所有参数都有默认值
    • 半缺省:部分参数有默认值
    • 规则:半缺省参数必须从右向左依次赋值,不能跳跃

四、函数重载

函数重载(Function Overloading)允许在同一作用域内定义多个同名函数,通过不同的参数列表(类型、数量或顺序)区分。编译器会根据调用时提供的实参类型选择对应的函数实现。


  • 本节完...
相关推荐
dddddppppp1234 小时前
c 模拟一个fat16文件系统
c语言·c++·算法
Jerry404_NotFound4 小时前
工厂方法模式
java·开发语言·jvm·工厂方法模式
微风欲寻竹影4 小时前
深入理解Java中的String
java·开发语言
代码or搬砖4 小时前
TransactionManager 详解、常见问题、解决方法
java·开发语言·spring
程序员佳佳5 小时前
文章标题:彻底抛弃OpenAI官方Key?实测GPT-5.2与Banana Pro(Gemini 3):这才是开发者的终极红利!
开发语言·人工智能·python·gpt·ai作画·api·midjourney
挖矿大亨5 小时前
C++中左移运算符重载
开发语言·c++
CoderCodingNo5 小时前
【GESP】C++五级真题(数论-素数、贪心思想考点) luogu-B4050 [GESP202409 五级] 挑战怪物
开发语言·c++·算法
~光~~5 小时前
【记录——内核模块加载到内核】基于鲁班猫4 rk3588s
c++·学习·rk3588s
Kiyra5 小时前
LinkedHashMap 源码阅读
java·开发语言·网络·人工智能·安全·阿里云·云计算
小刘爱玩单片机5 小时前
【stm32简单外设篇】- 三色LED
c语言·stm32·单片机·嵌入式硬件