七章 札记--C++ primer 之旅

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载
const 形参:
     如果将函数形参定义为非引用的const类型,EX: void fcn(const int i) {};  则不能修改实参的局部副本。
 
注意:  void fcn(const int i) {}; 和  void fcn(int i) {}; 编译的结果是一样的。

规则: 如果使用引用实参的唯一目的是避免复制实参,则应该将实参定义为const 引用
           EX: bool isShorter(const string &s1, const string &s2) ; 

注意: 非const引用实参 只能与完全同类型的非const对象关联
           应该将不修改相应实参的形参定义为const 应用。 这样就不会限制函数的应用,因为和形参相关的类型都可以作为实参传递,比如 void func( const string &s) ; 可以这样调用 func("hello word"); 
普通的非const引用形参在使用是不太灵活。这样的形参既不能用const对象初始化,也不能用字面值或产生右值的表达式实参初始化。


指向指针的引用: 
     EX: int *&v1;   从右往左理解:  v1 是一个引用, 与指向int型对象的指针相关联。

补充:以下两个问题不是很明白,求路过的各位爷指点指点。可怜

问题: 什么时候不应该将形参定义为引用??? 
问题: 什么时候应使用指针形参?什么时候应使用引用形参?两者的优缺点?
摘自『高质量c++编程』
条款一:指针与引用的区别 
指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 
首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

不需要修改数组形参的元素是,函数应该将形参定义为指向const对象的指针: void f(const int*);{/*.....*/}

通过引用传递数组: 如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组 的引用本身。这时,数组大小成为形参和实参类型的一部分,编译器会检查实参的大小与形参的大小是否匹配。
     EX: void printValue(int (&arr)[10]) {/*...*/};

多维数组的传递:
     多维数组以指向0号元素的指针方式传递,多维数组的元素本身就是数组,除了第一维以外的所有维的长度都是元素的一部分,必须明确指定。
EX : void printValue(int (*matirx)[10], int rowSize);  // matrix 声明为指向含有10个 int型元素的数组的指针。

     再次辨析:
                   int &arr[10];     //   [] 优先级高于$ ;定义了arr 这个数组,数组长度为10,数组元素为int 型的引用。
                   int (&arr) [10];  //   定义了 arr这个引用,引用的类型是  int[10]; 即 arr 是 长度为10的数组的引用。

                   int *matrix[10]; //  长度为10 ,元素为int*指向int的指针 的数组,解析如上。
                   int (*matirx)[10]; // 定义了指向 (长度为10,元素是整型的数组)的指针


函数的返回值:
     1) 返回非引用类型; 注意: 函数的返回值用于初始化在调用函数处创建的临时对象。   
     2) 返回引用;           注意: 当函数返回引用类型是,没有复制返回值。
                         EX:  // find shorter of two strings
                         const string &shorterString(const string &s1, const string &s2)
                         {     return s1.size()<s2.size()? s1:s2;          }
                         注: 调用函数和返回结果时,都没有复制这些string 对象。
                              
     3)不要返回局部对象的引用。

指定默认实参的约束: 在一个文件中,只能为一个形参指定默认实参一次。
                                 通常,应在函数声明中指定默认实参,并将该声明放在合适的头文件中。


局部对象:
     1)自动对象:默认情况下,局部变量的生命期局限于所在函数的每次执行期间。只有当定义它的函数被调用时才存在的对象称为自动对象。自动对象在每次调用函数时创建和撤消。 形参也是自动对象
     2)静态局部对象:static , static 局部对象确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化,这种对象一旦创建,在程序结束前都不会被撤消。


内联函数:
     1 内联数就是将它在程序的每个调用点上“内联地”展开。从而避免函数调用的开销。
     2 关键字 inline
     3 放置的位置: 头文件中
               内联函数应该在头文件中定义。  
                    回顾: 见笔记“第二章7/14 --C++ primer”   头文件例外的三种定义1、类的定义;2、const 对象 ;3 、inline 函数
               原因: 内联函数的定义对编译器而言必须是可见,才能在调用点“内敛地”展开。
    注意: 头文件加入或修改了内联函数时,使用了该头文件的所有源文件都必须重新编译。


类的成员函数:
     1) 函数原型必须在类中定义。 函数体可以在类中或在类外定义
     2) 编译器隐式地将在类中定义的成员函数当做内联函数

     3)const 成员函数:   EX :      double avg_price() const {/*...*/}
               类的成员函数都有一个隐含的形参 this, this 为调用函数的对象的地址。 
               const 改变了隐含的this 形参的类型,调用const 成员函数时, this形参将是一个指向 其对象的 const 类名* 类型的指针。  这种函数为常量成员函数。 const 成员函数不能修改调用该函数的对象。
               注: const 对象、指向const 对象的指针或引用只能用于调用其const 成员函数。


函数的重载:

形参是否为const 是否可以区分两个函数:
        EX: void   lookup(phone);
                void   lookup(const phone);
         以上两个生命属于重复声明。
          原因: 实参传递的方式,复制形参时并不考虑形参是否为const, 函数操作的只是副本,函数无法修改实参。所以既可将const 对象传递给const形参,也可传递给非const 形参。 这两种形参无本质差别。

          注意:形参与const 形参的等价性仅适用于非引用形参。 
                    有const 引用形参的函数 和 有非const 引用形参的函数是不同的。类似的,带有指向const 类型的指针形参和 带有指向相同类型的非const 对象的指针形参的函数是不同的。


结论: 仅当形参是引用或指针时,形参是否为const 才有影响。
注意: 不能基于指针本身是否为const 来实现重载
     f(int *);
     f(int *cont); // error

指向函数的指针: 函数指针也指向某个特定的类型。函数类型有其返回类型以及形参表确定。
                           EX: bool (*pf) (const string& ,const stirng &);
                           使用typedef 简化定义:
                            EX: typedef bool (*cmpFcn) (const string& ,const stirng &);
                                    cmpFcn pf ; 
函数指针的初始化和赋值: 同类型的函数或函数指针或0值常量表达式。   直接用函数名即可。

函数指针可以直接调用函数:  pf("hi","hello");


返回指向函数的指针:
     解析: int (*ff(int)) (int*,int);
              从声明的名字开始由里而外理解。
               ff(int)   ff 声明一个函数,带有一个int的形参,函数返回 int (*) (int*, int) , 他是指向一个函数的指针,所指向的函数返回int 型并带有两个分别是 int* 和 int 型 的形参。
      使用typedef 定义:
          typedef  int (*pf) (int *, int);
          pf  ff(int);








数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码) 数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994 立即下载

相关推荐

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

aba 回文练习 -- 参考罗大神的

#include #include #include #include using namespace std; #define maxn 1024 #define parr(arr,n) printf(#arr":");for(int kk=0;kk int bufa[maxn],bufb[maxn],bufs[maxn],bufv[maxn]; int sa[m

lsff Code World 6748

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

kmp 练习下

/* * ===================================================================================== * * Filename: kmp.cpp * * Description: * * Version: 1.0 * Created: 10/14/

lsff Code World 2290

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

手把手教你在Keil/IAR中移植SEGGER_RTT组件(避坑指南+性能对比)

本文详细介绍了在Keil/IAR开发环境中移植SEGGER RTT调试组件的完整流程与优化技巧。通过对比传统串口调试,SEGGER RTT凭借零硬件占用、高速传输和双向交互等优势,显著提升嵌入式开发效率。文章包含配置步骤、性能调优方案及常见问题解决方案,是嵌入式开发者必备的实用指南。

y7z8a的博客 243

初次邂逅句柄类 --C++ primer

句柄类存储和管理基类指针。 指针所指对象的类型可以变化,既能指向基类类型对象又可以指向派生类类型对象。 用户通过句柄类访问继承层次的操作 (virtual 函数) 设计考虑因素:        1)对任何保存指针的类一样,必须确定对复制控制的具体操作。包装了继承层次的句柄应该表现得像一个智能指针或者像一个值        2)句柄类决定句柄接口屏蔽还是不屏蔽继承层次。 如

lsff Code World 1859

搞定安卓11+抓包难题:用Kitsune Mask、magic_overlayfs和LSPosed三件套绕过SSL Pinning(保姆级教程)

本文详细解析了安卓11+系统中抓包面临的核心挑战,包括SSL Pinning和Root检测机制,并提供了使用Kitsune Mask、magic_overlayfs和LSPosed三件套的完整解决方案。通过动态分区技术解析和工具链配置,帮助开发者绕过安全限制,实现高效抓包分析。

weixin_42665255的博客 442

m_sort 归并排序(迭代)

#include #include #include using namespace std; typedef int element; void merge(element *list,element *sorted,int i,int m,int n) { int j=m+1,k=i; while(i if(list[i]  sorted[k++]=l

lsff Code World 1738

MFC工具栏增加EditBox和Button

1. 在资源视图中增加EditBox, Button控件,ID分别为ID_EDIT_SEED, ID_BTN_SEED 2. 在CMainFrame中增加成员变量 CMFCToolBarEditBoxButton *m_editSeed; CMFCToolBarButton *m_btnSeed; 3. 在CMainFrame::OnCreate中创建控件 m_editSeed = new CMFCToolBarEditBoxButton(ID_EDIT_SEED, GetCmdMgr()-&.

学习是为了探索这个世界的本质 802

电商项目功能简述

1.电商行业的技术特点 1.技术性 2.技术范围广 3.分布式 4.高并发,集群,负载均衡,高可用 5.海量数据 6.业务复杂 7.系统安全 2.电商行业的模式 B2B:企业到企业,商家到商家.代表:阿里巴巴 B2C:商家到客户.代表:京东.淘宝商城 C2C:客户到客户.淘宝集市 O2O:线上到线下 3.B2C电商系统架构功能模块 4.B2C电商系统架构功能描述 后台管理系统:管理商品、订单、类...

weixin_45116848的博客 9744

十一章 札记--C++ primer 之旅

find 运算: 形参:两个迭代器,检查两个迭代器实参标记范围内的每一个元素。找到与给定值的元素,返回指向该元素的迭代器;如果没匹配元素,这返回第二个形参。 注意: 泛型算法从不执行容器操作,单独依赖迭代器和迭代器操作实现,算法基于迭代器及其操作实现,而并非基于容器操作。 泛型算法     头文件   泛化的算术算法 头文件 只读算法:

lsff Code World 1308

百度api爬虫(1)从百度api中爬取地点数据

几句废话———— 百度api就是基于百度地图的开发接口,这么大的地图公司居然给开发接口真的很感激哎! 所以,言归正传。现在项目需求要把乌鲁木齐市内的所有清真寺都用矢量圈出来,然后做点统计啥的,最后做个专题图产品。 怎么把清真寺找出来? 领导的意思是你一个一个上网搜吧,这就是你的工作量。那我当然要想办法啊,边工作边学习工作才有意义嘛! 然后就发现百度api可以实现我的需求。其实可以通过py...

weixin_43105618的博客 8900

k_over 重叠字符串

#include #include #include #include using namespace std; #define maxn 1024 #define maxm 1024 int bufa[maxn],bufb[maxn],bufs[maxm],bufv[maxn]; int sa[maxn],height[maxn],rank[maxn];

lsff Code World 1207

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 449

ROS2实战:从零部署Cartographer激光SLAM系统

本文详细介绍了在ROS2 Humble环境下,从零开始部署Cartographer激光SLAM系统的完整实战流程。内容涵盖环境准备、Cartographer安装(APT与源码编译两种方式对比)、工作空间与功能包创建、核心启动文件与Lua配置文件编写、系统构建与可视化启动,以及地图保存与实战调参技巧,帮助开发者快速构建稳定可靠的机器人SLAM应用。

weixin_29213655的博客 248

二章 札记 --C++ primer 之旅

实习告一段落,翻开C++primer 准备苦逼的重温C++ 。以下是一些 从书上抄下来的笔记。 测试: -10u 是什么类型? -10u 类型是unsigned int  使用 typeid(-10u).name() 测试的 变量的初始化: 1、复制初始化: int ival=1024; 2、直接初始化: int ival(1024); 直接初始化语法更灵活且效率更高。

lsff Code World 817

18、未来医疗信息学中的太赫兹天线技术

本文探讨了太赫兹天线技术在医疗信息学中的关键作用,重点分析了分裂环谐振器和纳米结构光导天线(PCA)的设计与性能提升方法,介绍了相干与非相干太赫兹检测技术,并通过等效电路模型和数值模拟深入解析PCA工作机理。文章还展示了太赫兹技术在无创血糖监测、肿瘤检测等医疗诊断中的实验应用,总结了其非侵入性、高分辨率成像和多参数分析等优势,同时指出信号检测难、成本高和技术复杂等挑战。未来趋势包括设备小型化、效率提升及与人工智能融合,拓展至药物研发、皮肤与神经疾病诊断等领域,展现出变革医疗健康的巨大潜力。

milk8的博客 146

C++ new 和 delete 的重载

发现:类里面有几种成员函数是没有this指针的,也就是访问不了类的成员  构造函数:有; 说明其实对象真正的初始化就是在初始化类表  析构函数:有; 析构函数在最后的时刻才把对象空间释放  普通函数:有  static函数: 没有,但能访问静态成员  重载的 new new[]成员函数: 没有, 因为对象的产生是先有空间在调用构造函数,new就是完成前个步骤的工作  重载的 delet

lsff Code World 704

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

十五章 札记--C++ primer 之旅

C++动态绑定的实现      在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这是动态绑定的关键。 用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指向对象的实际类型所定义的。 虚函数: 除了构造函数外,任意非static 成员函数都可以是虚函数。保留字virtu

lsff Code World 648

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十六章 札记--C++ primer 之旅

模板定义: 1、函数模板:             模板定义以关键字 template 开始,后接尖括号括起的模板形参表。                 inline 函数模板, inline 说明符放在模板形参表后面,返回类型之前。     2、定义类模板:            必须以关键字template开头, 后接模板形参类型表。

lsff Code World 645

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

十四章 札记--C++ primer 之旅

重载运算符:具有特殊名称的函数,operator + 操作符符号 ,具有返回类型和形参表。注意: 重载操作符必须具有至少一个类类型或枚举类型的操作数。大多数重载操作符可以定义为普通非成员函数或类的成员函数。作为类成员的重载函数,形参比操作数数目少1,隐含的this 形参,限定为第一个操作数。规则:一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员操作符重载和友元关系:     操作符

lsff Code World 615

十三章 札记--C++ primer 之旅

复制构造函数:       定义: 一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。      调用: 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数。 当将该类型的对象传递给函数或从函数返回该类型的对象是,将隐式使用复制构造函数。 析构函数:      定义: 析构函数可用于释放对象在构造或在对象的生命期中所获得

lsff Code World 606

八章 札记--C++ primer 之旅

IO 对象 不可复制或赋值 形参或返回类型不能是流类型,可以通过传递或返回指向该对象的指针或引用 来传递和返回IO 对象。 所有流对象都包含一个条件状态成员,类型为iostate 类型 流的状态由 bad , fail ,eof 和 good 操作解释,如果 bad,fail 或者 eof 任意一个为 true ,则检查流本身将显示该流处于错误状态。反之,如果三个

lsff Code World 564

十二章 札记--C++ primer 之旅

类成员: 可以使数据、 函数 或者 类型别名 typedef 定义的 所有成员必须在类的内部声明。 构造函数: 一般使用一个构造函数初始化列表 来初始化对象的数据成员。                 EX: Sales_item() : units_sold(0),  revenue(0.0) {}                 构造函数初始化式只在构造

lsff Code World 546
上一篇: 五六章 札记--C++ primer 之旅
下一篇: 八章 札记--C++ primer 之旅
lsff01
博客等级 码龄14年 4粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值