常量引用:形参不能修改,节省开辟内存空间的开销

用一级指针代替二级指针
常量引用,使用场景,修饰形参为只读
const int a=10会分配内存
如果使用引用,在前面加了一个const的话,那么就不可以修改形参

void  test01(const int  &b) {
cout << "b=" << b << endl;
}
const int f=43;//这个f是在全局里面,不可以在修改的,不可以使用引用,用指针int *p=(int*)&f;,不可以对*p进行操作,f的值是全局常量,不可以在修改了,*p的值是43
void s1() {
int a = ;
test01(a);
int *c = &a;
const int &b = ;//加了const的话,不可以在修改了,引用,int &d=b;真正的一个常量
int *p = (int*)&b;//使用指针取地址
*p = ;
cout << "p=" << b << endl;

    const int v = 43;//真正的一个常量,可以初始化数组,在C中不可以这样,C++可以
    int arr[v];//初始化数组,

  
}
int main() {
s1();
system("pause");//阻塞,可以暂停
return EXIT_SUCCESS;//退出返回,返回正常退出
//cout << "hello" << endl;
  
}

const给常量分配内部空间,在进行重新赋值

//int  &ref=43;//这样可以的,不可以分配内存空间
const int &ref=;const可以额外分配内存空间,相当于是int temp=;const int &ref=temp;
//ref=54;//这样是不可以的
//用指针来取到地址
int *p=(int*)&ref;//前面不能加const,否则是常量
*p=;//此时已经改变了
cout<<"ref="<<ref<<endl;//此时打印的结果为33,已经改变了

如果是常量的话,要修改值的话,可以用指针的形式,取到地址然后在进行下一步的操作,如果前面加了const是常量,是不可以修改的,要修改的可以使用指针,const可以分配内存空间

类的设计:

设计类,抽象类
class 类名{
public 公共权限
设置成员属性
设置成员函数
}

使用类 创建对象,实例化对象
类名 对象名
类和对象的关系:
类是对象的抽象
对象是对类的实例

求圆的周长:

#include "pch.h"
#include<iostream>
using namespace std;
//尽量不使用define
//#define Max=100;
const double pi=;
//设计一个类
//class代表的是关键字,后面紧跟和这个是类名
//周长
class Circle
{
public://如果没有加这句的话,那这类里面的方法就取不到
//public//公共权限
double getres() {//在这里用来double,所以不需要加括号来获取值
return m_r *pi* ;//注意这个函数是double的类型,所哟注意这个返回值也要double的类型
}
//成员函数可以修改成员属性,传参数进来进行过赋值操作
void getr(int r) {
m_r = r;//对半径进行赋值
}
int m_r;
};
int main() {
int r = ;
Circle c1;//对象都可以抽象出来一个类,c1是抽象出来的类
c1.getr();//传半径进去,进行赋值操作,传参数进去进行赋值操作
//double res = c1.getres;
cout << "res=" << c1.getres() << endl;
}

设计学生类:

#include <string>
class Stu{
public://注意,在这里要加public,公共权限才可以的
int xuhao;
string name;
//成员函数可以修改成员属性
void getid(int num){
xuhao = num;
}; void getname(string n) {
name = n;
};
};
void s2() {
Stu s;
s.getid();
s.getname("alex");
cout << "学号:" << s.xuhao << "姓名:" << s.name << endl;
}
int main() {
s2();
}

内联函数:inline,解决了宏缺陷的问题(#define),宏缺陷,作用域,类型,一些运算

//宏,作用域,类型
//定义一个加法
#define MyAdd(x,y) x+y //要这样使用(x)+(y)》》有缺陷 //宏缺陷,作用域,类型,++ //内联函数注意事项
//内联函数声明
inline void func();
void func() {//要加inline关键字 //类内部的成员函数会默认加iline关键字 }

以下几种情况不能有过多考虑
1.不能存在任何形式的循环语句
2.不能存在过多的条件判断语句
3.函数体积不能过于庞大
4.不能对函数进行取地址操作

内联函数总结:

//内联函数解决了宏缺陷的问题
//给编译器一个建议,加上关键字
//成员函数默认会加上关键字,inline
//编译器有时候会默认加inline

C++入门篇四的更多相关文章

  1. 【SSRS】入门篇(四) -- 向报表添加数据

    原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到 ...

  2. FPGA基础入门篇(四) 边沿检测电路

    FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...

  3. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  4. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  5. .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练

    写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...

  6. ElasticSearch入门 第四篇:使用C#添加和更新文档

    这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  7. Linux入门篇(四)——Vim的使用与Bash

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

  8. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  9. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

随机推荐

  1. JS 优化条件语句的5个技巧

    前言 在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句. 一.对多个条件使用 Array.includes 例子: function con ...

  2. PS教您与粗壮的胳膊拜拜

    Step 01在Photoshop 中打开素材图片,图中圈出的地方是需要调整的. Step 02用[套索工具]圈出胳膊及周围的环境. Step 03单击右键,选择[羽化],设置[羽化半径]为20 像素 ...

  3. mysql截取函数substring_index()和right()用法

    ); 以.作为截取的分隔符. ); 从第2位开始截取,截取所有的. );

  4. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3

    1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...

  5. 栈(LIFO)

    1 栈的定义 栈是限定在表尾进行插入和删除操作的线性表. 2 栈的特点 1)栈是特殊的线性表,线性表也具有前驱后继性: 2)栈的插入和删除操作只能在表尾即栈顶进行: 3)后进先出. 3 栈的实现及关键 ...

  6. less的基本使用

    众所周知,less是一门css预处理语言,其他的类似还有scss.Stylus 等,和js相似度比较高的就是less了.话不多说,我们来看less的使用. Node.js 环境中使用 Less : n ...

  7. CentOS 7安装MongoDB

    1 下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz 2 解压 .tgz 3 将解压包 ...

  8. Flask 视图,中间件

    视图 FBV def index(nid): """ 请求相关信息 request.method # 请求方式 request.args # get 方式的参数获取 re ...

  9. 题解 CF540D 【Bad Luck Island】

    既然没有大佬写题解那本蒟蒻就厚颜无耻地写(水)一(经)下(验)吧 题目要求算出个种人单独留下的存活率 因为n,m,p的范围极小, 那么就可以方便地设3位dp状态dp[i][j][k]表示剩余i个石头, ...

  10. Burnside引理的感性证明

    \(Burnside\)引理的感性证明: 其中:\(G\)是置换集合,\(|G|\)是置换种数,\(T_i\)是第\(i\)类置换中的不动点数. \[L = \frac{1}{|G|} * \sum ...