当前位置: 首页 > article >正文

C++学习笔记——day 1

1. 不能用非const修饰的指针指向const修饰的变量

2. c++中的四种cast

(1)static_cast

        兼容类型之间的进行显式转换

        (1)基本数据类型转化(int 转 double)

        (2)类层次结构中上行转换(子类转父类)

        (3)示例

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

enum Week
{
    Sun, Mon, Tue, Wes, Thu, Fri, Sat
};

int main()
{
    enum Week w;
    int n = 10;

    w = static_cast<Week>(n);

    cout << w + 1 << endl;

    return 0;
}

(2)dynamic_cast

(3)const_cast

(4)reinterpret_cast

3. 内联函数

(1)定义

        C++中的内联函数(Inline Function)是一种用于优化程序性能的机制。通过在函数声明或定义前加上关键字inline,编译器可以将该函数的调用直接替换为函数体的代码,以减少函数调用的开销,特别是在短小、频繁调用的函数中,这种机制可以提高执行效率

(2)示例代码

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

inline void fun(int *p)
{
    *p += 1;
};

int main()
{
    int i = 0;

    fun(&i);

    cout << i << endl;

    return 0;
}

(3)注意

        多文件编程中,内敛函数所有的函数体内容最好写在头文件中

        (1)main.cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include "fun.h"

using namespace std;

int main()
{
    int i = 0;

    fun(&i);

    cout << i << endl;

    return 0;
}

        (2)fun.h

#ifndef FUN_H
#define FUN_H

inline void fun(int *p)
{
    *p += 1;
};

#endif // FUN_H

4. 引用传参(变量别名,可以通过函数传参直接操作原变量)

(1)定义

        在C++中,引用传参是一种通过传递变量的引用(即别名)来实现函数参数传递的方式。相比值传递,引用传参允许函数直接操作原始数据,而无需对参数进行复制,因此可以提高性能,特别是在传递大型对象时

(2)作用

        在性能要求高的场景,避免复制开销,允许修改实参,提高内存效率

(3)代码示例

#include <iostream>
#include <cstdio>
#include <cstring>
#include "fun.h"

using namespace std;

void fun1(int &p)
{
    ++p;
}

int main()
{
    int i = 0;
    int &ref = i;

    ref += 1;
    cout << i << endl;

    fun1(i);
    cout << i << endl;

    return 0;
}

(4)引用和指针的区别

        (1)引用不占空间,指针占8个字节

        (2)引用必须初始化,而指针不必

        (3)引用在被绑定以后,这种绑定关系是不能被拆解的,而指针可以指向其他的空间

5.函数的重载

(1)定义

        c++中函数重载是指在同一个作用域内,可以定义多个具有相同函数名但参数列表不同的函数,编译器通过参数的个数、类型或顺序来区分这些函数,从而选择合适的函数进行调用

(2)代码示例

        (1)参数个数不同

void print(int a);
void print(int a, int b);

        (2)参数类型不同

void print(int a);
void print(double a);

        (3)参数顺序不同

void print(int a, double b);
void print(double a, int b);

(3)函数重载规则

        (1)返回值类型不能作为函数重载的依据,即返回值类型不同但参数列表相同的函数不能构成重载

int add(int a, int b);
double add(int a, int b);  // 错误,不能通过返回值类型区分

        (2)默认参数不能用于区分重载函数

void print(int a);
void print(int a, int b = 0);  // 错误,默认参数导致模糊


http://www.kler.cn/a/292875.html

相关文章:

  • MYSQL 库,表 基本操作
  • R语言机器学习与临床预测模型77--机器学习预测常用R语言包
  • 黄色校正电容102j100
  • 分享一个傻瓜式一键启动的加速器
  • Ubuntu20.4系统编译瑞芯微RK3568 SDK
  • linux安装netstat命令
  • 后缀表达式转中缀表达式
  • 攻防世界 unseping
  • 回归预测|基于粒子群优化核极限学习机PSO-KELM结合Adaboost集成的数据预测Matlab程序 多特征输入单输出
  • 使用 TinyML 和云支持的自动部署实现可持续个性化的设备内人体活动识别
  • PostgreSQL 12.2 版本升级到 16.4 版本
  • 【GC】垃圾回收原理分析
  • 维度不固定的多维数组形参笔记
  • 什么是AIGC?什么是AGI?
  • P8687 [蓝桥杯 2019 省 A] 糖果
  • 苹果mac数据恢复概率大吗 mac数据恢复专业软件哪个好用
  • Pyspark DataFrame常用操作函数和示例
  • javascript中数组遍历的所有方法
  • 云计算之云原生(下)
  • 【电机控制】TC275芯片——ADC外设驱动的配置与实现
  • RK3566/RK3568 Android 11 动态禁止/启用APP
  • 深度学习(二)-损失函数+梯度下降
  • SprinBoot+Vue食堂预约点餐微信小程序的设计与实现
  • 数据手册参数识别后手动确认
  • FFmpeg源码:av_rescale_rnd、av_rescale_q_rnd、av_rescale_q、av_add_stable函数分析
  • 手机扬声器音量总是不够大?试试“扬声器助推器”吧