C++入门(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for)

下面我将详细讲解 C++ 入门的几个重要知识点:命名空间、缺省参数、函数重载、引用、内联函数、auto、范围 for。

命名空间

命名空间可以理解为一种管理代码作用域的方式,它将变量、函数、类等标识符组织在一个作用域中,避免了不同命名空间的标识符之间的命名冲突。例如:

#include<iostream>
using namespace std;

namespace my_namespace {
    int num = 10;
    void print() {
        cout << "Hello from my_namespace!" << endl;
    }
}

int main() {
    cout << "Global num: " << num << endl;   // 输出全局变量num
    cout << "Namespace num: " << my_namespace::num << endl; // 输出my_namespace中的num
    my_namespace::print();  // 调用my_namespace中的print函数
    return 0;
}

上述代码中,我定义了一个名为 my_namespace 的命名空间,并在其中定义了一个变量 num 和一个函数 print,并且我在 main() 函数中使用了该命名空间中的变量与函数。

缺省参数

C++ 中的函数可以定义缺省参数,这些参数在调用函数时如果不提供实参,将使用默认值。例如:

#include<iostream>
using namespace std;

void func(int x, int y = 10) {
    cout << "x=" << x << ", y=" << y << endl;
}

int main() {
    func(5);
    func(3, 7);
    return 0;
}

上述代码中,我定义了一个名为 func 的函数,并且为其第二个参数定义了一个缺省参数值 10。在 main() 函数中,我分别调用 func 函数并传入一个实参与两个实参,分别会输出 x=5, y=10x=3, y=7

函数重载

C++ 允许我们定义同名函数,只要它们的参数列表不同,称之为函数的重载。例如:

#include<iostream>
using namespace std;

void add(int x, int y) {
    cout << x << " + " << y << " = " << x + y << endl;
}

void add(double x, double y) {
    cout << x << " + " << y << " = " << x + y << endl;
}

int main() {
    add(2, 3);
    add(2.1, 3.4);
    return 0;
}

上述代码中,我定义了两个名为 add 的函数,分别接受两个 int 类型与两个 double 类型的参数。由于函数的参数列表不同,两个函数之间不存在命名冲突。

引用

C++ 允许我们定义引用类型,它是一个已定义变量的别名,可以访问原始变量的值并进行修改。例如:

#include<iostream>
using namespace std;

int main() {
    int x = 10;
    int &ref = x;   // 定义引用类型ref,指向x
    ref = 20;       // 修改ref引用的变量x的值
    cout << "x=" << x << ", ref=" << ref << endl;
    return 0;
}

上述代码中,我定义了一个变量 x,并定义了一个引用类型 ref,将 ref 指向 x,并且我在修改 ref 的值时,也相当于修改原始变量 x 的值。最终输出 x=20, ref=20

内联函数

C++ 中的内联函数通过将函数体直接嵌入到程序中,以取代函数调用过程中的额外开销,从而提高程序运行效率。例如:

#include<iostream>
using namespace std;

inline int add(int x, int y) {
    return x + y;
}

int main() {
    cout << "2 + 3 = " << add(2, 3) << endl;
    cout << "5 + 7 = " << add(5, 7) << endl;
    return 0;
}

上述代码中,我使用 inline 关键字定义了一个名为 add 的内联函数,inline 会让编译器在编译时将该函数体嵌入到程序中,从而避免了函数调用过程中的额外开销,并提高了程序运行效率。

auto

C++11 引入了一个新特性 auto,它可以让编译器在编译时自动推断出变量的类型。例如:

#include<iostream>
using namespace std;

int main() {
    auto x = 10;          // 自动推断出x为int类型
    auto y = 3.14;        // 自动推断出y为double类型
    auto z = "Hello";     // 自动推断出z为const char*类型
    cout << "x=" << x << ", y=" << y << ", z=" << z << endl;
    return 0;
}

上述代码中,我使用 auto 定义了三个不同的变量,编译器会根据变量初始化时的值自动推断出其类型。

范围 for

C++11 引入了一个新特性 范围 for,它可以简化数组、容器或字符串的遍历过程。例如:

#include<iostream>
#include<vector>
using namespace std;

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    vector<int> vec = {6, 7, 8, 9, 10};
    string str = "Hello, World!";

    // 使用范围 for 遍历数组
    for (auto x : arr) {
        cout << x << " ";
    }
    cout << endl;

    // 使用范围 for 遍历容器
    for (auto x : vec) {
        cout << x << " ";
    }
    cout << endl;

    // 使用范围 for 遍历字符串
    for (auto ch : str) {
        cout << ch;
    }
    cout << endl;

    return 0;
}

上述代码中,我分别定义了一个数组、一个容器和一个字符串,并使用 范围 for 分别遍历它们的元素,并输出到标准输出流中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++入门(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • AE怎么制作削碎一块的圆形动画? ae做圆形破碎部分动画的技巧

    制作圆形破碎部分动画是一种常见的AE动画效果。下面是制作该效果的完整攻略: 步骤1:准备工作 在AE中打开一个新项目,将需要制作圆形破碎部分动画的素材导入到项目中。素材可能是一张图片或一个动画序列,取决于你的需求。确保素材已经被正确地导入到项目中。 步骤2:制作Mask 创建一个新的黑色图层,用于制作遮罩(Mask)。在图层上创建一个白色的圆形遮罩(Mask…

    C 2023年5月22日
    00
  • 在nodeJs中如何修改json文件中的数据

    修改 JSON 文件中的数据在 Node.js 中有多种实现方式,下面我将介绍其中两种常用的方法。 方法一:使用Node.js内置的fs模块 1. 使用fs.readFile()方法读取JSON文件 fs.readFile() 方法可以读取 JSON 文件的内容,并返回一个字符串类型的 JSON 数据。 const fs = require(‘fs’); f…

    C 2023年5月23日
    00
  • C++骑士游历问题(马踏棋盘)解析

    C++骑士游历问题(马踏棋盘)解析 简介 骑士游历问题,又称马踏棋盘问题,属于图论中的路径问题。问题描述:在一个 n*n 的棋盘上,放置一个马的棋子,从任意一个位置出发,按照马的走法,遍历所有的棋盘。不可重复经过。 解题思路 递归回溯法 定义 首先定义一个二维棋盘 board 存储马在棋盘上的路径。board[i][j]的值为k表示是第 k 步走到了位置 (…

    C 2023年5月23日
    00
  • Android 中StringBuffer 和StringBuilder常用方法

    Android中StringBuffer和StringBuilder常用方法 引言 StringBuffer和StringBuilder类在Android开发中非常常用,这两个类都可以实现对字符串的添加、删除、修改等操作。由于使用方式相似且重新复制的开销相对较小,所以StringBuilder是在Java 5中引入的,而StringBuffer则是在早期版本…

    C 2023年5月22日
    00
  • C++实现四叉树效果(附源码下载)

    C++实现四叉树效果(附源码下载) 四叉树也称为四元树或者八叉树,是一种树形数据结构,其特点是每个内部节点有四个子节点或是八个子节点。四叉树在计算机图形学和图像处理领域中得到了广泛应用。本文将讲解如何用 C++ 实现四叉树,并提供源码下载。 实现思路 基本概念 四叉树的基本概念是将二维空间划分为四个象限,每个象限为一个节点。每个节点又可以继续向下划分,直到一…

    C 2023年5月23日
    00
  • 详解C#对XML、JSON等格式的解析

    详解C#对XML、JSON等格式的解析 XML解析 在C#中,可以通过System.Xml命名空间下的类库实现对XML格式的解析。主要的类包括: XmlDocument:表示一个XML文档,可以通过该类的实例对象进行读取、创建、编辑XML文档。 XmlNode:表示XML文档中的一个节点。 XmlElement:表示XML文档中的一个元素节点。 XmlAtt…

    C 2023年5月23日
    00
  • 深入讲解数据库中Decimal类型的使用以及实现方法

    下面我来给您详细讲解“深入讲解数据库中Decimal类型的使用以及实现方法”的完整攻略。 深入讲解数据库中Decimal类型的使用以及实现方法 什么是Decimal类型 Decimal类型是一种用于存储精确数值的数据类型。在数据库中常用于存储货币、利率、精度要求高的计算结果等场景。与浮点型(float)不同的是,Decimal类型不会存在精度损失的情况。 D…

    C 2023年5月22日
    00
  • C++实现简单通讯录管理系统

    C++实现简单通讯录管理系统攻略 目标 实现一个简单的通讯录管理系统,可以进行添加联系人、删除联系人、修改联系人和显示联系人等操作。程序的主要功能如下: 添加联系人:输入姓名、性别、年龄、电话及地址信息,添加一个联系人信息到通讯录中。 显示联系人:显示通讯录中的所有联系人信息。 删除联系人:输入要删除联系人的姓名,从通讯录中删除该联系人的信息。 查找联系人:…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部