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日

相关文章

  • json.stringify()与json.parse()的区别以及用处

    JSON在现代Web应用程序开发过程中扮演着非常重要的角色。它是一种数据格式,用来交换数据,而且被广泛使用。JS开发者通常需要将JS对象转换为JSON格式,然后将其发送到服务器或者持久性存储,JSON也会从服务器返回,然后被转换为JS对象。这个过程需要使用JSON.stringify()和JSON.parse()这两个方法来进行。 JSON.stringif…

    C 2023年5月23日
    00
  • JDK1.8、JDK1.7、JDK1.6区别看这里

    JDK1.6、JDK1.7、JDK1.8区别 Java Development Kit(JDK)是Java编程环境的发行版。JDK包含Java运行环境(JRE)和Java开发工具(JDK)。 JDK版本通常以数字表示(例如JDK1.6、JDK1.7、JDK1.8)。下面是这些版本的主要区别。 JDK1.6(Java 6) JDK1.6提供了许多新功能和改进。…

    C 2023年5月22日
    00
  • Visual C++ 常用数据类型转换方法详解第1/2页

    标题部分 Visual C++ 常用数据类型转换方法详解 简介部分 在开发过程中,常常需要进行数据类型转换,比如int类型转换为string类型、string类型转换为double类型等。Visual C++ 提供了丰富的数据类型转换方法,本文将详细讲解常用的数据类型转换方法。 数据类型转换方法示例 将 int 类型转换为 string 类型 代码示例: i…

    C 2023年5月23日
    00
  • C++11获取线程返回值的实现代码

    让我来详细讲解C++11获取线程返回值的实现代码,包括以下几个步骤: 第一步:定义线程函数 在使用C++11获取线程返回值时,我们需要先定义一个线程函数,该函数负责执行耗时的代码逻辑,并返回需要的结果。例如,下面这个线程函数将通过计算两个整数的和来返回一个结果: int sum(int a, int b) { return a + b; } 第二步:创建线程…

    C 2023年5月22日
    00
  • 详解C++中普通旧数据(POD)的使用

    详解 C++ 中普通旧数据(POD)的使用 什么是 POD 类型 C++ 中的 POD 类型代表的是“普通的旧数据”(Plain Old Data),也就是可以被赋初值、拷贝、比较和操纵的数据结构。如果一个数据结构不是 POD 类型,则它就不一定可以简单拷贝或赋值,否则很可能导致内存泄漏和 UB(未定义行为)。 POD 类型有以下三个特点: 1.它们的所有成…

    C 2023年5月23日
    00
  • 深入解析C++中的指针数组与指向指针的指针

    深入解析C++中的指针数组与指向指针的指针 指针数组 指针数组是指以数组形式存储的指针的集合。其语法格式为: type* array_name[size]; type为指针所指向的类型,array_name为数组的名称,size为数组的大小。其中,*表示指针运算符。指针数组定义完成后,可以通过下标的方式对其进行操作。 以下是一个示例,展示如何定义和使用指针数…

    C 2023年5月23日
    00
  • C语言完整特性详情

    C语言完整特性详情攻略 什么是C语言? C语言是一种高效且灵活的计算机程序设计语言,是当前最为流行的程序设计语言之一。它可以用于开发操作系统、编写嵌入式系统、控制硬件资源等。 C语言特性概述 C语言有以下几大特性: 显式的内存管理,开发者可以直接操作指针来分配和释放内存。 面向过程的程序设计范式,将一个大程序拆分成多个函数,实现不同的功能。 简单的语言规范和…

    C 2023年5月22日
    00
  • 推荐几个不错的console调试技巧实现

    接下来我将详细讲解“推荐几个不错的console调试技巧实现”的完整攻略。 1. 使用console.log输出调试信息 console.log是一个非常常见的调试技巧,它可以在浏览器的控制台输出调试信息。可以用它输出变量、对象、函数等内容,方便我们找到问题所在。 示例代码: let username = ‘John’; console.log(‘当前用户名…

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