全面掌握 C++ 基础:关键特性与进化

文章目录

  • [全面掌握 C++ 基础:关键特性与进化](#全面掌握 C++ 基础:关键特性与进化)
    • [1. C++ 关键字](#1. C++ 关键字)
    • [2. 命名空间(namespace)](#2. 命名空间(namespace))
        • [⚠️ 示例](#⚠️ 示例)
      • [2.1 定义命名空间](#2.1 定义命名空间)
      • [2.2 使用成员的方法](#2.2 使用成员的方法)
    • [3. C++ 输入/输出(iostream)](#3. C++ 输入/输出(iostream))
    • [4. 缺省参数(Default Parameter)](#4. 缺省参数(Default Parameter))
      • [4.1 定义与使用](#4.1 定义与使用)
      • [4.2 分类](#4.2 分类)
      • [⚠️ 注意事项](#⚠️ 注意事项)
    • [5. 函数重载(Function Overloading)](#5. 函数重载(Function Overloading))
      • [5.1 支持条件](#5.1 支持条件)
      • [5.2 示例](#5.2 示例)
      • [✅ 原理](#✅ 原理)
    • [6. 引用(Reference)](#6. 引用(Reference))
      • [6.1 基础概念](#6.1 基础概念)
      • [6.2 使用场景](#6.2 使用场景)
      • [6.3 常引用(const&)](#6.3 常引用(const&))
      • [6.4 性能提示](#6.4 性能提示)
    • [7. 内联函数(inline)](#7. 内联函数(inline))
    • [8. auto 关键字(C++11)](#8. auto 关键字(C++11))
      • [⚠️ 注意:](#⚠️ 注意:)
    • [9. 范围 for 循环(C++11)](#9. 范围 for 循环(C++11))

全面掌握 C++ 基础:关键特性与进化


💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对C语言感兴趣的朋友,让我们一起进步,共同提升!

1. C++ 关键字


2. 命名空间(namespace)

作用:避免全局标识符冲突,实现作用域管理。

⚠️ 示例
cpp 复制代码
#include <stdio.h>
#include <stdlib.h>
int rand = 10;

int main() {
    printf("%d", rand);  // 与 stdlib.h 的 rand 冲突,编译错误
    return 0;
}

2.1 定义命名空间

cpp 复制代码
namespace test1 {
    int rand = 10;
    int Add(int l, int r) { return l + r; }
    struct Node {
        Node* next;
        int val;
    };
}

2.2 使用成员的方法

  1. 精确指定作用域
    test1::rand

  2. using 引入某个成员

    cpp 复制代码
    using test1::rand;
    printf("%d", rand);
  3. using namespace 完全展开

    cpp 复制代码
    using namespace test1;
    printf("%d", rand);

3. C++ 输入/输出(iostream)

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
    cout << "Hello, world!" << endl;
    return 0;
}
  • << 是输出流插入运算符,endl 换行并刷新。
  • 相比 printf/scanfcout/cin 能自动类型识别,更安全、简洁。

4. 缺省参数(Default Parameter)

4.1 定义与使用

cpp 复制代码
void Func(int a = 0) {
    cout << a << endl;
}
Func();    // 输出 0
Func(10);  // 输出 10

4.2 分类

  • 全缺省:所有参数都有默认值。
  • 半缺省:只能从右向左省略参数。

⚠️ 注意事项

  1. 默认参数应出现在 声明 中,只写一次;
  2. 默认值必须是常量或全局变量;
  3. 只能从右起连续省略,中间不能跳缺。

5. 函数重载(Function Overloading)

5.1 支持条件

同名函数,只要参数列表不同(类型、个数、顺序),即构成重载;返回值不同不算。

5.2 示例

cpp 复制代码
int Add(int, int);
double Add(double, double);

void f();
void f(int);
void f(int, char);
void f(char, int);

✅ 原理

C++ 编译器通过 name mangling 为不同签名改名,实现重载支持;C 语言不支持。


6. 引用(Reference)

6.1 基础概念

cpp 复制代码
int a = 10;
int& ra = a;  // ra 是 a 的别名,二者共享内存
  • 必须初始化,且不能改变实体;
  • 可有多个引用指向同一对象。

6.2 使用场景

  1. 参数传递:修改调用方变量或减少拷贝开销。

  2. 返回值:尤其用于静态变量引用,避免临时对象。

    • 返回栈上对象引用会出错!

6.3 常引用(const&)

cpp 复制代码
const int& ra = 10;
  • 防止修改,且可绑定临时值或常量。

6.4 性能提示

引用比传值快,特别是大对象或容器,可以减少或避免拷贝开销。


7. 内联函数(inline)

  • inline 修饰的小函数,会在编译期展开,去掉函数调用开销。
  • 不建议用于大型、递归或少用函数,否则可能导致可执行体积增大或忽略 inline。
  • 推荐在头文件中定义,防止链接错误。

8. auto 关键字(C++11)

  • 原是存储类别说明符,C++11 被重定义为编译器类型推断符。
  • 使用示例:
cpp 复制代码
auto a = 10;     // int
auto b = 'x';    // char
auto c = func(); // 根据返回类型推断

⚠️ 注意:

  • 必须初始化;
  • 不能用于参数类型声明;
  • 避免误用:建议与范围 for 或 lambda 搭配使用。

9. 范围 for 循环(C++11)

cpp 复制代码
int arr[] = {1,2,3,4,5};
for (auto& e : arr) {
    e *= 2;
}
  • 语法简洁、出错率低;
  • 要求类型支持 begin()end() 或迭代器操作。


你好,我是意疏。我们一起进步。

意气风发,漫卷疏狂
学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。

如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。

我是意疏 下次见!

相关推荐
老一岁5 分钟前
c++set和pair的使用
开发语言·c++
@我漫长的孤独流浪12 分钟前
数据结构----排序(3)
数据结构·c++·算法
k***a42922 分钟前
Python 中设置布尔值参数为 True 来启用验证
开发语言·windows·python
RPGMZ44 分钟前
RPGMZ游戏引擎 如何手动控制文字显示速度
开发语言·javascript·游戏引擎·rpgmz
oioihoii1 小时前
C++11 GC Interface:从入门到精通
java·jvm·c++
salsm1 小时前
Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战
c++·静态分析·clang·代码质量
Porien1 小时前
Vulkan-记录 官方教程的详细步骤(记录踩坑)
c++·计算机图形学
机器学习之心1 小时前
三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现
开发语言·sma·hho·gwo·无人机三维路径规划对比
weixin_462176411 小时前
(三十一)深度解析领域特定语言(DSL)第六章——语法分析:递归下降语法分析器(Recursive-Descent Parser)
java·开发语言·软件构建
小刘同学++2 小时前
C++11 alignas 和 alignof 关键字
开发语言·c++