首页 > 其他分享 >const用法详解以及auto用法详解

const用法详解以及auto用法详解

时间:2024-06-08 15:31:28浏览次数:25  
标签:const 推导 int auto 用法 详解 类型 指针

const用法详解:

主要用途:

定义一个不可修改的常量

1、修饰变量:

语法:const 数据类型 变量名 = 值;
示例:const int N=3;
说明:const修饰的变量必须在声明时初始化,并且之后不能被修改。

2、修饰指针

2.1、常量指针:

语法:数据类型 * const p = &a;
示例:int * const p=&a;
说明:指针本身的值(它所指向的地址)不能被修改,但指针所指向的内容可以被修改。

2.2、指向常量的指针:

语法:const 数据类型 * 指针名;
示例:const int *p = &a;
说明:指针所指向的内容不能被修改,但指针本身的值(即它所指向的地址)可以被修改。

2.3 、常量指针指向常量:

语法:const 数据类型 * const 指针名;
示例:const int * const p = &a;
说明:指针本身的值和指针所指向的内容都不能被修改。

3. 修饰函数参数:

用法:在函数参数列表中使用 const 可以确保函数不会修改传递给它的参数。
示例:void foo(const int &x) { ... }

4. 修饰函数返回值:

用法:返回常量可以防止函数返回的对象被意外修改。
示例:const int bar() { ... }

5. 修饰成员函数:

用法:在 C++ 中,const 修饰的成员函数表示该函数不会修改类的任何成员变量(除非它们是 mutable 的)。
示例:class MyClass { ... int getValue() const { ... } ... };

6. 修饰类对象

用法:在 C++ 中,使用 const 修饰的对象只能调用其 const 成员函数。
示例:const MyClass obj; obj.getValue(); // OK obj.nonConstFunction(); // Error

7. 注意事项

const 关键字可以提高代码的可读性和安全性,因为它明确表示某些数据或函数不会被修改。
使用 const 关键字可以帮助编译器进行更好的优化,因为它知道某些数据是常量,可以在编译时进行一些优化。

auto用法详解:

1、基本类型推导:

auto x = 10;     // x 是 int 类型
auto y = 3.14;   // y 是 double 类型
auto z = 'a';    // z 是 char 类型

2、初始化列表推导:

auto arr = {1, 2, 3, 4};  // arr 是 std::initializer_list<int> 类型

注意,如果你想要一个std::vector或其他容器类型,你需要显式指定类型或者使用std::vector的构造函数。

auto vec = std::vector<int>{1, 2, 3, 4, 5}; // 使用auto和std::vector的构造函数

3、引用类型推导:

int a = 10;
auto& ref = a;    // ref 是 int& 类型,引用 a

4、指针类型推导:

int b = 20;
auto ptr = &b;    // ptr 是 int* 类型,指向 b

5、复杂类型推导:

std::map<std::string, int> myMap = {{"apple", 1}, {"banana", 2}};
auto it = myMap.begin();  // it 是 std::map<std::string, int>::iterator 类型

6、函数返回类型推导:
在C++14及以后的版本中,你可以使用auto作为函数的返回类型,让编译器自动推导。

auto add(int a, int b) {
    return a + b;  // 返回类型是 int
}

7、模板中的类型推导:
在模板函数中,auto也可以用于推导模板参数的类型。

template<typename T, typename U>
auto add(T a, U b) {
    return a + b;  // 返回类型取决于 a 和 b 的类型以及它们是否支持加法操作
}

8、范围for循环中的类型推导:
在范围for循环中,auto通常用于推导容器中元素的类型。

std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto elem : vec) {
    // elem 是 int 类型
}

标签:const,推导,int,auto,用法,详解,类型,指针
From: https://blog.csdn.net/2301_80662593/article/details/139546156

相关文章

  • Linux top命令详解
    命令介绍top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。$top01:06:48up1:22,1user,loadaverage:0.06,0.60,0.48Tasks:29total,1running,28sleeping,0stopped,......
  • 数据结构和矩阵细节用法:double、cell和complex #matlab
    建立矩阵用[];矩阵的同一行内的元素用逗号或者空格隔开矩阵的不同行的元素用分号隔开eg.       矩阵     A=123456789在matlab中矩阵A表示为:clc;clear;A=[1,2,3;4,5,6;7,8,9]; %或者A=[123;456;789];小矩阵构建大矩阵假设:A=[......
  • 嵌入式Linux系统编程 — 1.5 文件描述符详解
    目录1文件描述符简介1.1文件描述符特点1.2标准文件描述符1.3文件描述符的生命周期2 fcntl()函数2.1fcntl()函数简介2.2复制文件描述符(F_DUPFD)2.3获取/设置文件状态标志(F_GETFL/F_SETFL)1文件描述符简介文件描述符(FileDescriptor)是Linux和UNIX系统编......
  • Docker大学生看了都会系列(7、Dokcerfile详解)
    系列文章目录第一章Docker介绍第二章2.1Mac通过Homebrew安装Docker第二章2.2CentOS安装Docker第三章Docker常用命令第四章常用命令实战第五章Docker镜像详解第六章Docker容器数据卷第七章Dockerfile详解文章目录一、Dockerfile基本介绍1.1什么是Dock......
  • python学习笔记(pyautogui)1
       PyCharm安装库失败的大部分原因是pip与setuptools版本老了.感谢前辈发文,解决半年困惑.学习python主要搞自动化脚本,提高工作效率。  PyAutoGui是一个跨平台GUI自动化库,PyAutoGUI是一个Python模块,用于以编程方式控制鼠标和键盘。   PyAutoGUI可以模拟鼠......
  • 【产品经理修炼之道】-详解资金路由系统设计
    将路由概念引入信贷领域,实现端到端不同路径的资金分发策略,其中有效的设计能够对互联网金融带来帮助。本文详细介绍了资金路由的概念与详细的系统设计思路,从业务流程的基本图解到前端展示实例,为资金路由系统设计提供了有效参考,适合关注互联网金融产品的小伙伴阅读。高端的系统......
  • C语言详解(动态内存管理)1
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • const详解
    关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变。但是,可以通过取地址进行修改。 将const在指针前进行修饰,那么就修饰指针所指向的变量。但是指针变量可以被修改。  将const在指针后进行修饰,那么就修饰指针变量本身。但是指针指向的......
  • 网络原理-计算机网络详解-网线传递数字信号的原理
    网络原理-计算机网络详解-网线传递数字信号的原理家用的网线:传递的数字信号,原理是:(1)和电线传输电的原理一样,只不过网线上传输的就是脉冲电信号,而且遵守一定的电器规则。(2)计算机上的数据都是用0和1来保存的,所以在网线上传输时就要用一个电压表示数据0,用另一个电压表示数据1。(3)网......
  • 覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 详解
    2000年一篇论文CoverageofKnownSpaces:TheBoustrophedonCellularDecomposition横空出世,解决了很多计算机和机器人领域的覆盖路径问题,今天我来详细解读这个算法。TheBoustrophedonCellularDecomposition算法详解这篇论文标题为"CoveragePathPlanning:TheB......