const用法详解以及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 类型
}
  • 30
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值