【C++】C++入门


什么是缺省参数?

缺省参数是指在定义函数时,为某些参数提供默认值。当调用函数时,如果不提供这些参数的值,则函数会使用其默认值。这样做可以使函数调用更加灵活,简化代码。

缺省参数的语法

在C++中,可以在函数声明或定义时为参数设置默认值。语法如下:

return_type function_name(parameter_type parameter_name = default_value) {
    // 函数体
}

示例:使用缺省参数

让我们通过一个示例来说明缺省参数的用法。假设我们有一个函数 printMessage,用于打印消息到控制台。我们希望这个函数可以接受一个可选的前缀参数,如果不提供前缀,则默认为 "Message: "。我们可以这样定义这个函数:

#include <iostream>
#include <string>

void printMessage(const std::string& message = "Message: ") {
    std::cout << message << std::endl;
}

然后,我们可以调用这个函数,并根据需要提供前缀参数:

int main() {
    printMessage(); // 输出默认消息 "Message: "
    printMessage("Hello, world!"); // 输出指定消息 "Hello, world!"
    return 0;
}

在上面的示例中,如果调用 printMessage 函数时不提供参数,则会使用默认值 "Message: "。

注意事项

  1. 缺省参数只能从右向左设置: 在定义函数时,只能从右向左设置缺省参数。也就是说,如果一个参数有默认值,其右边的所有参数都必须有默认值。

  2. 缺省参数只能在声明或定义中设置: 缺省参数只能在函数声明或定义中设置,不能在函数的调用处重新设置参数的默认值。



什么是函数重载?

函数重载是指在同一个作用域内,可以定义多个名称相同但参数列表不同的函数。这样做的好处是,可以使用相同的函数名来表示不同版本的函数,根据参数的不同类型或数量,编译器会自动选择合适的函数进行调用。

函数重载的语法

在C++中,函数重载的语法非常简单,只需要在同一作用域内定义多个同名函数,它们的参数列表必须不同。参数列表的不同可以体现在参数的类型、数量或顺序上。

示例:使用函数重载

让我们通过一个简单的示例来说明函数重载的用法。假设我们有一个函数 add,用于计算两个数的和。我们希望这个函数可以处理不同类型的参数,例如整数、浮点数和字符串。我们可以这样定义这个函数的重载版本:

#include <iostream>
#include <string>

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

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

std::string add(const std::string& s1, const std::string& s2) {
    return s1 + s2;
}

然后,我们可以调用这些重载版本的 add 函数,并传入不同类型的参数:

int main() {
    std::cout << add(3, 5) << std::endl; // 输出 8
    std::cout << add(3.5f, 4.2f) << std::endl; // 输出 7.7
    std::cout << add("Hello, ", "world!") << std::endl; // 输出 "Hello, world!"
    return 0;
}

在上面的示例中,我们定义了三个重载版本的 add 函数,分别处理整数、浮点数和字符串类型的参数。通过不同版本的 add 函数,我们可以实现不同类型的加法运算。

注意事项

  1. 函数重载要求参数列表必须不同: 函数重载的函数名相同,但参数列表必须不同,否则会导致编译器错误。

  2. 函数重载可以根据参数类型、数量或顺序进行匹配: 编译器会根据函数调用时传入的参数类型、数量或顺序来选择合适的函数进行调用



什么是引用?

引用是C++中的一种别名,它允许我们为一个已经存在的变量或对象创建一个别名。引用提供了一种更方便的方式来操作变量,同时可以避免不必要的内存开销和复制。

引用的语法

在C++中,引用通过在变量名前加上 & 符号来声明。例如:

int num = 10;
int& ref = num; // 引用num变量

上面的代码中,refnum 的引用,它相当于 num 的别名,对 ref 的操作实际上就是对 num 的操作。

引用的特点

  1. 引用必须在声明时进行初始化: 引用在声明时必须进行初始化,且一旦初始化后,不能再引用其他变量

  2. 引用不能改变目标: 一旦引用被初始化为某个变量的别名,它就会一直指向该变量,无法改变目标。

  3. 引用是常量: 引用本身是一个常量,即一旦初始化后,不能再指向其他变量

示例:使用引用

让我们通过一些示例代码来演示引用的用法:

#include <iostream>

int main() {
    int num = 10;
    int& ref = num; // 引用num变量

    std::cout << "num的值:" << num << std::endl; // 输出 10
    std::cout << "ref的值:" << ref << std::endl; // 输出 10

    ref = 20; // 修改引用的值
    std::cout << "num的值:" << num << std::endl; // 输出 20
    std::cout << "ref的值:" << ref << std::endl; // 输出 20

    return 0;
}

在上面的示例中,我们定义了一个整型变量 num,然后创建了一个对 num 的引用 ref。通过引用 ref,我们可以直接修改 num 的值,而不需要使用 num 本身。

注意事项

  1. 引用与指针的区别: 引用和指针都可以用于间接访问变量,但引用更安全且更易于使用,因为它不需要像指针一样显式地进行解引用操作。

  2. 引用作为函数参数: 在函数参数中,引用可以用于传递参数,这样可以避免参数的复制,提高函数的执行效率。



什么是内联函数?

内联函数是C++中的一种特殊函数,它通过将函数体插入到调用处来实现函数调用的过程。内联函数通常用于执行简单的操作,比如简单的数学运算或者访问数据成员等。

内联函数的优势

  1. 减少函数调用开销: 内联函数的主要优势是减少函数调用的开销,因为它将函数体直接插入到调用处,避免了函数调用时的参数传递、栈帧建立和跳转等开销。

  2. 提高程序执行速度: 由于内联函数避免了函数调用的开销,因此可以提高程序的执行速度,特别是对于频繁调用的简单函数而言。

  3. 增加代码可读性: 内联函数可以将一些简单的操作直接嵌入到代码中,使代码更加简洁和易于理解。

内联函数的语法

在C++中,使用 inline 关键字来声明内联函数。例如:

inline int max(int a, int b) {
    return (a > b) ? a : b;
}

上面的代码定义了一个内联函数 max,用于返回两个整数中的最大值。在调用该函数时,编译器会将函数体直接插入到调用处,而不是通过函数调用的方式执行。

示例:使用内联函数

让我们通过一些示例代码来演示内联函数的用法:

#include <iostream>

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

int main() {
    int num = 5;
    std::cout << "5的平方:" << square(num) << std::endl;
    return 0;
}

在上面的示例中,我们定义了一个内联函数 square,用于计算一个整数的平方。在 main 函数中,我们调用了 square 函数来计算 5 的平方,并输出结果。

注意事项

  1. 内联函数的适用性: 内联函数适用于执行简单的操作,但不适合执行复杂的操作或者包含循环、递归等控制结构的函数。

  2. 函数体的大小: 内联函数的函数体通常应该比较小,避免过大的函数体导致代码膨胀和性能下降。


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一岁就可帅-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值