C++:语言概述
高级语言编译过程
以C++为例,其编译过程通常包括预处理、编译、汇编和链接四个阶段:
预处理:处理以“#”开头的指令(如#include、#define等),并生成预处理后的源代码。
编译:将预处理后的代码转换为汇编代码。
汇编:将汇编代码转换为机器语言的二进制形式(目标代码)。
链接:将一个或多个目标文件以及库文件合并,生成最终的可执行文件。
C++ 的输入输出
在 C++ 中,输入输出(I/O)操作通常使用标准库提供的 头文件。以下是一些常用的输入输出方法和示例:
- 标准输入输出
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)!