自学内容网 自学内容网

C++:语言概述

高级语言编译过程

以C++为例,其编译过程通常包括预处理、编译、汇编和链接四个阶段:

预处理:处理以“#”开头的指令(如#include、#define等),并生成预处理后的源代码。
编译:将预处理后的代码转换为汇编代码。
汇编:将汇编代码转换为机器语言的二进制形式(目标代码)。
链接:将一个或多个目标文件以及库文件合并,生成最终的可执行文件。
在这里插入图片描述

C++ 的输入输出

在 C++ 中,输入输出(I/O)操作通常使用标准库提供的 头文件。以下是一些常用的输入输出方法和示例:

  1. 标准输入输出
    std::cin 用于从标准输入(通常是键盘)读取数据。
    std::cout 用于向标准输出(通常是屏幕)输出数据。
    std::cerr 用于输出错误信息到标准错误输出(通常是屏幕)。
    std::clog 用于输出日志信息到标准日志输出(通常是屏幕,但可以与标准错误输出不同)。
#include <QCoreApplication>
#include <iostream>

int main() {
    int number;
    std::string text;

    // 从标准输入读取一个整数和一个字符串
    std::cout << "请输入一个整数: ";
    std::cin >> number;
    std::cout << "请输入一个字符串: ";
    std::cin >> text;

    // 输出读取的数据
    std::cout << "你输入的整数是: " << number << std::endl;
    std::cout << "你输入的字符串是: " << text << std::endl;

    // 输出错误信息
    std::cerr << "这是一个错误信息" << std::endl;

    // 输出日志信息
    std::clog << "这是一个日志信息" << std::endl;

    return 0;
}

在这里插入图片描述
格式化输出
C++ 提供了多种格式化输出的方法,包括使用流操纵符(如 std::setw, std::setprecision, std::left, std::right, std::hex 等)。

#include <QCoreApplication>
#include <iostream>
#include <iomanip> // 包含流操纵符的头文件 setw

int main() {
    double pi = 3.141592653589793;
    int number = 42;

    // 设置字段宽度和精度
    std::cout << std::setw(10) << std::setprecision(5) << std::fixed << pi << std::endl;

    // 设置对齐方式
    std::cout << std::setw(10) << std::left << "Left" << std::endl;
    std::cout << std::setw(10) << std::right << "Right" << std::endl;

    // 输出十六进制
    std::cout << std::hex << number << std::endl;

    // 恢复为默认输出格式
    std::cout << std::dec << number << std::endl; // 十进制

    return 0;
}

在这里插入图片描述

内联函数

在C++中,内联函数(Inline Function)是一种建议编译器将函数体中的代码在每个调用点直接展开(内联展开)的函数。这种机制旨在减少函数调用的开销,特别是对于那些体积小且频繁调用的函数。
本质就是存储空间换时间

#include <QCoreApplication>
#include <iostream>

inline int square(int x) {
    return x * x;
}

int main() {
    int num = 5;
    std::cout << "Square of " << num << " is " << square(num) << std::endl;
    return 0;
}

在这里插入图片描述
可以通过在函数声明或定义前加上inline关键字来建议编译器将函数内联化

inline int add(int a, int b) {
    return a + b;
}

也可以在函数声明时加上inline关键字,然后在其他地方定义函数

inline int add(int a, int b);

int add(int a, int b) {
    return a + b;
}

总结
内联函数是C++中用于减少函数调用开销的一种机制,通过inline关键字建议编译器进行内联展开。然而,这只是一个建议,编译器可能会忽略它,而且内联函数的使用需要谨慎,以避免代码膨胀和调试困难等问题。

重载函数

在C++中,函数重载(Function Overloading)是一种允许在相同作用域内创建多个同名函数的功能,但这些函数的参数列表(即参数的个数、类型或顺序)必须不同。函数重载使得函数名可以具有多重含义,具体取决于传递给它的参数。

函数重载的条件
函数名相同:重载的函数必须具有相同的名称。
参数列表不同:重载的函数的参数列表必须不同。这可以通过改变参数的个数、参数的类型或者参数的顺序来实现。
返回类型无要求:函数重载不要求返回类型必须不同。也就是说,返回类型不影响函数重载的决议。
作用域相同:重载的函数必须在相同的作用域内声明。

#include <iostream>
using namespace std;

// 重载函数,打印一个整数
void print(int i) {
    cout << "Integer: " << i << endl;
}

// 重载函数,打印一个浮点数
void print(double d) {
    cout << "Double: " << d << endl;
}

// 重载函数,打印一个字符串
void print(const string& str) {
    cout << "String: " << str << endl;
}

int main() {
    print(42);        // 调用第一个print函数
    print(3.14);      // 调用第二个print函数
    print("Hello");   // 调用第三个print函数
    return 0;
}

在这里插入图片描述


原文地址:https://blog.csdn.net/qq_43441284/article/details/143867089

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!