首页 > 编程语言 >【C++】C++入门

【C++】C++入门

时间:2024-04-11 12:03:58浏览次数:16  
标签:入门 示例 int 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. 函数体的大小: 内联函数的函数体通常应该比较小,避免过大的函数体导致代码膨胀和性能下降。


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

标签:入门,示例,int,C++,参数,引用,内联,函数
From: https://blog.csdn.net/W9940/article/details/137561010

相关文章

  • Shell脚本编程入门技能
    Shell脚本编程入门技能Shell脚本的概念Shell是一个命令解释器,它的作用是解释执行用户命令及程序等,用户每输入一条命令,shell就执行一条。这种从键盘输入命令,就可以得到回应的对话方式,称为交互的方式。当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序......
  • 在远程windows上调试Cmake项目 C++
    记录一下CMake项目MSVC编译器远程调试方法参考资料  教程:在远程Windows计算机上调试CMake项目|MicrosoftLearn1.使用VS打开cmake项目2.右键main.cpp文件,添加调试配置选择C++ 3.会打开一个launch.vs.json文件 配置一下 注意:远程机器那里写需要运行的机器号 ......
  • C++ 虚函数与纯虚函数
    C++中的虚函数(virtual)是可以被子类重写的成员函数而纯虚函数(purevirtual)是必须被抽象/基类中的定义的虚函数,必须被派生类实现virtualtypefunction(){}//虚函数virtualvoidfuntion1()=0//纯虚函数主要区别:实现虚函数有实现,而纯虚函数没有实现子类中虚函数可......
  • plantuml使用入门
    idea安装插件 新建planuml文件 选择类型(时序图or流程图or·······) 编辑文件内容 cf中添加宏  把uml代码粘贴过来结果如下图     各种图的语法学习:https://plantuml.com/zh/sequence-diagram其他学习:https://zhuanlan.zhihu.com/p/......
  • 【粉丝福利社】《向AI提问的艺术:提示工程入门与应用》(文末送书-进行中)
    ......
  • C++——模板初阶
    目录0.前言1.泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则3.类模板3.1类模板的定义格式3.2类模板的实例化0.前言C++模板是一种泛型编程的工具,允许开发者定义对多种数据类型都适用的代......
  • QtCreator配置C++20开发环境
    我不知道你的QtCreator是什么版本的,但是我觉得操作方案是相同的,让QtCreator编译C++20代码,需要你有一个支持C++20的编译器,不管你是msvc还是gcc,总要有一个。如果你和我一样,用的5.12.12,那真的太巧了,请看步骤吧:配置kit:首先你应该有一个Qt版本的列表,如果没有,请你自行添加,添加的方式......
  • 第十二届蓝桥杯省赛真题(C/C++大学B组)
    目录#A空间#B卡片#C直线#D货物摆放#E路径#F时间显示#G砝码称重#H 杨辉三角形#I双向排序#J括号序列#A空间#include<bits/stdc++.h>usingnamespacestd;intmain(){ cout<<256*1024*1024/4<<endl; return0;}#B卡片#include<bit......
  • Linux驱动开发入门实验
    目录一、驱动模块的加载和卸载二、分配和释放设备号三、字符设备注册与注销四、实现设备的具体操作函数五、添加LICENSE和作者信息六、驱动程序完整代码七、编译驱动程序八、加载驱动模块一、驱动模块的加载和卸载Linux驱动有两种运行方式:第一种即是将驱动编译......
  • C/C++学习笔记-eclipse不支持C++11问题
    转 https://blog.csdn.net/qq_35703954/article/details/81540315std::thread的使用,结果编译报错信息如下: 问题分析:查看错误提示,发现thread不是命名空间std的一个成员,那么我们知道thread很明显是std的成员,那么久只有一种可能:即没有引入相关的头文件,但是检查发现,头文件也有。又......