IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C++关键字 const static inline delete default register -> 正文阅读

[数据结构与算法]C++关键字 const static inline delete default register

const:

const 类型的对象在程序执行期间不能被修改改变。

const int a

const 指针

int main()
{

    int a=23;
    int b=67;
    int c=90;
/*    执行顺序从右往左看 */
    int* const p0=&a; 	//p0为指针,指向a的内存地址,指向地址不可改变 (const修饰p0,不可改变p0指向的内存地址) 
    int const* p1=&b; //同const int* p1=&b;  p1为指针,指向b的内存地址, 不可通过*p1方式改变p1指向的值,不影响b的值修改(const修饰*p1,*p1不可改变)
    const int* const p2=&c; // p2为指针,指向c的内存单元,指向地址不可改变,不可通过*p2方式改变p2指向的值,不影响c的值修改(const修饰p2与*p2,p2和*p2都不可改变)
  // ( const int* const p2=&c可以理解为const int* (const p2)=&c,括号内的const修饰p2,然后把(const p2)看成一个整体进行理解,这种写法错误,但是可以借助这种方式理解)
	*p0=66;           //如果写成p0=&b;则会报错 
	cout<<*p0<<endl;
	p1=&b; b=66;          //如果写成*p1=66,则会报错 
	cout<<*p1<<endl ;
	c=66; 
	cout<<*p2<<endl ;
}
与引用相结合
int const &a=x 等同于 const int &a=x;
和指针一样表示a是x的引用且a的值和x的值都是常量,不能被更新。

const函数

void fun1(const int a)//防止临时变量a被修改,一般不用
{
    cout<<a; // 如果写++a,则会报错,由于a不能被改变
}
 void fun2(int* const  p)//防止指针被恶意篡改
{
    cout<<*p; // 可以通过修改*p来改变p指向内存地址的值
}
void fun3(const int &m)//防止引用的方式修改实参
{
    cout<<m;
}
int * const fun4(int *p)//防止返回的地址被修改
{
	cout<<p<<"   ";
	return p;
}
int  const fun4(int m)//防止返回的值被修改
{
	cout<<m<<"   ";
	return m;
}

const在类中的使用

通过const修饰数据成员表示数据成员在初始化后不能修改,且const数据成员只能通过构造函数初始化列表初始化;
通过const修饰成员函数表示函数中不会修改类中的数据成员;
通过const修饰对象表示对象是一个常量,且常量对象只能调用类的成员函数。

class A{
    public:
        const int* const fun() const;//返回值是一个指针,第一个const说明返回值不能修改,第二个const说明指针无法修改,第三个const说明此函数不会修改类中的数据成员
}

delete和default:

1、在函数声明后加入=delete即可将该函数标记,一旦被调用则会导致编译错误。可以将旧版本的函数标记delete。
注意:如果一个函数声明加了delete之后,不能再对其进行定义,可以理解为禁用,不然会报错

#include <iostream>
class Person {

private:
    void deleteFun() = delete;
};

在函数声明后面加default,相当于对此函数进行默认的定义(一般在构造函数和析构函数里使用)。

#include <iostream>
class Person {
    Person() = default;
private:
};

static:

static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁

#include <iostream>
using namespace std;
void fun()
{
    static int num1 = 2;//在局部函数执行结束后,不会回收num1的空间
    int num2 = 2; //在局部函数执行结束后,便回收num2的空间
    num1++;num2++;
    cout<<"num1的值为:"<<num1<<"   num2的值为:"<<num2<<endl;
}
int main()
{
    int i=5;
    while(i>0)
    {
        i--;
        fun();
    }
    return 0;
}

输出结果:

num1的值为:3    num2的值为:3
num1的值为:4    num2的值为:3
num1的值为:5    num2的值为:3
num1的值为:6    num2的值为:3
num1的值为:7    num2的值为:3

inline:

内联关键字,为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(Inline Function),又称内嵌函数或者内置函数。内联函数一般比较短。

#include <iostream>
using namespace std;
//内联函数,交换两个数的值
inline void swap(int *a, int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
int main(){
    int m, n;
    cin>>m>>n;
    cout<<m<<", "<<n<<endl;
    swap(&m, &n);
    cout<<m<<", "<<n<<endl;
    return 0;
}

函数调用的过程:
函数是一个可以重复使用的代码块,CPU 会一条一条地挨着执行其中的代码。CPU 在执行主调函数代码时如果遇到了被调函数,主调函数就会暂停,CPU 转而执行被调函数的代码;被调函数执行完毕后再返回到主调函数,主调函数根据刚才的状态继续往下执行

register:

register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量,只用于需要快速访问的变量;

register int count;//count变量存储在寄存器中,访问速度快
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-03 09:27:13  更:2022-05-03 09:27:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:22:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码