在 C++ 中,同一作用域下,同一个函数名是可以定义多次的,前提是形参列表不同。这种名字相同但形参列表不同的函数,叫做“重载函数”。这是 C++ 相对 C 语言的重大改进,也是面向对象的基础。 定义重载函数 // 使用指针和长度作为形参 void printArray(const int* arr, int size) { for (int i = 0; i < size; i++) cout << arr[i] << "\t"; cout << endl; } // 使用数组引用作为形参 void printArray(const int(&arr)[6]) { for (int num : arr) cout << num << "\t"; cout << endl; } int main() { int arr[6] = {1, 2, 3, 4, 5, 6}; printArray(arr, 6);
内联函数是 C++ 为了提高运行速度做的一项优化。函数让代码更加模块化,可重用性、可读性大大提高;不过函数也有一个缺点:函数调用需要执行一系列额外操作,会降低程序运行效率。 为了解决这个问题,C++ 引入了“内联函数”的概念。使用内联函数时,编译器不再去做常规的函数调用,而是把它在调用点上“内联”展开,也就是直接用函数代码替换了函数调用。 内联函数的定义 定义内联函数,只需要在函数声明或者函数定义前加上 inline 关键字。例如将比较两个字符串、并返回较长的字符串,就可以重写为内联函数: inline const string& longerStr(const string& str1, const string& str2) { return str1.size() > str2.size() ? str1 : str2; } 当我们试图打印输出调用结果时: cout << longerStr(str1, str2) << endl; // 编译器会自动把它展开,提高运行效率。 // cout <&l
由于数组“不能拷贝”的特点,函数也无法直接返回一个数组。不过我们可以使用指针或者引用来实现返回数组的目标;通常会返回一个数组指针。 int arr[5] = {1, 2, 3, 4, 5}; int* pa[5]; // 指针数组,pa是包含5个int指针的数组 int(*ap)[5] = &arr; // 数组指针,ap是一个指针,指向长度为5的int数组 int(*fun(int x))[5]; // 函数声明,fun返回值类型为数组指针 这里对于函数 fun 的声明,我们可以进行层层解析: fun(int x) :函数名为 fun,形参为 int 类型的 x (* fun(int x)):函数返回的结果,可以执行解引用操作,说明是一个指针 (* fun(int x))[5]:函数返回结果解引用之后是一个长度为 5 的数组,说明返回类型是数组指针 int(* fun(int x))[5]:数组中元素类型为 int 数组指针的定义比较繁琐,为了简化定义,我们可以使用关键字 typedef 来定义一个类型的别名: // 简化函数声
在 C++ 中,指针、const 和数组之间有一些重要的关系。指针和 const 可以用于限定指针的可变性和所指向的值的可变性,而指针可以与数组进行关联,方便对数组进行遍历和操作。 指针和 const 指针可以和 const 修饰符结合,常见的有两种形式: 一种是指针指向的是一个常量 另一种是指针本身是一个常量 (1)指向常量的指针 指针指向的是一个常量,所以只能访问数据,不能通过指针对数据进行修改。不过指针本身是变量,可以指向另外的数据对象。这时应该把 const 加在类型前。 const int a = 10, b = 20; //int* pa = &a; // 错误,类型不匹配 const int* pa = &a; // 正确,pa是指向常量的指针,类型为const int* pa = &b; // pa可以指向另一个常量 int i = 1024; pa = &i; // pa也可以指向变量 *pa = 1000; // 错误,不
字符串我们并不陌生。一串字符连在一起就是一个“字符串”,比如用双引号引起来的“Hello World!”就是一个字符串字面值。 字符串其实就是所谓的“纯文本”,就是各种文字、数字、符号在一起表达的一串信息;所以字符串就是 C++ 中用来表达和处理文本信息的数据类型。 标准库类型 string C++ 的标准库中,提供了一种用来表示字符串的数据类型 string,这种类型能够表示长度可变的字符序列。和 vector 类似,string 类型也定义在命名空间 std 中,使用它必须包含string 头文件。 # include<string> using namespace std; (1)定义和初始化 string C++ 中有很多不同类型的初始化方式,string 也是一个标准库类型,它的初始化与 vector 非常相似。 常用写法: string 变量名 = "字符串值" // 默认初始化 string s1; // 拷贝初始化 string s2 = s1; string s3 = "Hello, World"; // 直接初始化 string
Justin_Wu
山不让尘,川不辞盈
本网站由 提供CDN加速/云存储服务
鄂ICP备2023005457号 鄂公网安备 42011302000815号
欢迎来自 * · * 的用户