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日

相关文章

  • JavaScript Tween算法及缓动效果

    JavaScript Tween算法及缓动效果可以让网页元素在运动过程中模拟出物理现象,使得动画更加自然流畅。本文将详细讲解Tween算法的原理和实现,以及常见的缓动效果。 什么是Tween算法 Tween算法又称为缓动算法,是一种基于物理现象模拟的动画算法。它的核心思想是在一定的时间内,根据当前的动画进度,计算出该时刻动画应该处于什么状态。Tween算法是…

    C 2023年5月22日
    00
  • C++实现LeetCode(123.买股票的最佳时间之三)

    下面我将从几个方面来详细讲解“C++实现LeetCode(123.买股票的最佳时间之三)”的完整攻略。 一、题目描述 本题的题目描述如下: 给定一个数组 prices ,其中 prices[i] 代表某股票在第 i 天的价格。你最多可以完成两笔交易。计算你所能获取的最大利润。注意:你不能同时参与多笔交易(即,你必须在再次购买之前卖出之前的股票)。 但是,在完…

    C 2023年5月22日
    00
  • OPPO R1C怎么样?OPPO R1C发布时间及配置介绍

    OPPO R1C怎么样? 发布时间 OPPO R1C是2015年1月发布的,当时它的外观设计和拍照功能引起了很多人的关注。 配置介绍 外观设计 OPPO R1C采用了2.5D玻璃面板和金属边框的设计,具有非常优秀的手感和外观表现。另外,R1C还采用了悬浮玻璃后盖设计,整体视觉效果非常出色。 基本配置 OPPO R1C搭载了高通骁龙615的芯片,采用超大1/3…

    C 2023年5月23日
    00
  • C语言求阶乘之和的三种实现方法(先阶乘再累加)

    当我们需要计算n的阶乘之和时,可以采用以下三种方法进行实现: 方法一:单层for循环 在本方法中,我们可以将for循环的条件直接设为i<=n即可,每次循环计算i的阶乘并加到sum中,最后输出sum即可。 示例代码: #include <stdio.h> int main() { int n, sum=0, factorial=1; prin…

    C 2023年5月23日
    00
  • C 语言基础教程(我的C之旅开始了)[三]

    C 语言基础教程(我的C之旅开始了)[三] 完整攻略 在这篇文章中,作者主要介绍了C语言中的条件语句——if语句和switch语句。具体的内容包括以下几个方面: 1. if语句 if是C语言中最常用的条件语句之一,在语法上非常简单,格式为: if (表达式) { 代码块; } 其中,表达式可以是任何可以返回值的C表达式,代码块则是需要执行的语句组合。 在文章…

    C 2023年5月23日
    00
  • vscode调用c项目后怎么引用dll?

    在VSCode中调用C语言项目,如果需要使用动态链接库(DLL)的话,一般需要进行以下步骤: 创建动态链接库 先编写动态链接库的代码并生成DLL文件。例如,编写一个示例代码,将其保存为 “hello.c”,编译并生成DLL文件 “hello.dll”。示例代码如下: #include <stdio.h> #include <stdlib.h…

    C 2023年5月23日
    00
  • C语言归排与计排深度理解

    C语言归排与计排深度理解 什么是排序算法? 排序算法是计算机程序设计中最常见的问题之一。排序算法是一种将输入元素按特定顺序排列的算法。排序算法分为内部排序和外部排序:- 对于内存(内部)排序,其输入和输出均存储在计算机内存中。- 对于外存(外部)排序,其输入或输出涉及到显式的输入/输出操作,通常通过磁带、磁盘或因特网进行数据传输和存储。 本篇文档主要介绍内部…

    C 2023年5月23日
    00
  • mysql 的load data infile

    MySQL 的 LOAD DATA INFILE 命令可以通过加载本地或远程文件的方式,将数据快速地导入到数据库中,具有导入速度快、效率高等优点。 以下是使用 LOAD DATA INFILE 导入数据的步骤: 1. 准备数据文件 首先要准备好要导入的数据文件,该文件的格式必须与要导入到的表的字段格式完全相同。可以采用各种格式的文件,如 .csv、.txt、…

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