<More Effective C++>笔记--运算符

Purify使用指南 1. 简介2. 安装2.1. 安装license2.2. 安装Purify3. 使用3.1. 查看帮助3.2. 使用步骤   ATTACH3.3. 查看BUG   ATTACH3.4. 定位BUG在源代码中的位置   ATTACH3.5. 查找泄漏的内存   ATTACH3.6. 修改BUG   ATTACH3.7. 隐藏消息   ATTACH4. 保存/载入结果4.1. 保存结果4.2. 载入结 阅读详情

2 运算符
~~~~~~~~~

2.1 谨慎定义类型转换函数
=========================
   1. 有两种函数允许编译器进行隐式类型转换:
      * 单参数构造函数(包括除了第一个参数,所有参数都有缺省值得情况)
      * 隐式类型转换运算符
        隐式类型转换运算符只是一个样子奇怪的成员函数:operator 关键字,其后跟一个类型符号。你不用定义函数的返回类型,因为返回类型就是这个函数的名字。
   2. explicit关键字,只会拒绝隐式类型转换而调用构造函数。显式类型转换依然合法。
   3. 隐式类型转换只会转换一次,即不会A转成B再转成C
 

 
  1. struct B 
  2. { 
  3.     B(int){}; 
  4. }; 
  5. struct D2 
  6. { 
  7.     D2(B ){}; 
  8. }; 
  9. void test(D2) 
  10. { 
  11.     cout<<"D2 created"<<endl; 
  12. } 
  13. int main() 
  14. { 
  15.     test(1);  //编译出错,不能int->B->D2 
  16. } 



2.2 区别自增和自减operator的前置和后置形式
===========================================
   1. 前置operator不带参数,而后置operator带一个int参数,在调用时,编译器自动赋值为0
   2. 前置返回一个reference,而后置返回一个const对象(主要是为了防止i++++能够编译通过,而且i只增加一次,不合逻辑)
   3. 后置式operator的实现应该以前置式operator为基础。

2.3 千万不要重载&&,||和,操作符(因为你永远无法模拟它们)
==========================================================
   1. C++对&&和||采取“骤死式”的评估方式。
      然而当重定义这些运算符时,“函数调用语义”会取代“骤死式语义”。
      “函数调用语义”意味着:所有参数都必须评估完成,各参数评估的次序未知
   2. C++对,的评估方式为:逗号左边会先评估,然后逗号的右边再被评估,最后整个逗号表达式的结果以逗号右边的值为代表。

2.4 了解不同意义的new和delete
==============================
   1. new operator(也叫new表达式)和operator new是不同的
      A* a = new A(),这里的new是new operator,它是C++内置的,你不能改变它的意义(无法重载),它总是先分配足够内存然后调用构造函数初始化内存中的对象。
      new operator调用operator new来完成第一部分内存的分配步骤,operator new能够被重载
   2. 当调用new operator来分配数组时,就不是调用operator new来分配内存,而是调用operator new[]来分配内存
   3. operator new通常声明为void* operator new(size_t size);这里返回类型为void*因为函数返回的是一个未初始化内存的指针。
      你能够增加额外的参数重载函数operator new,但是第一个参数类型必须是size_t
   4. delete operator和operator delete也是类似的不同。
 

本文出自 “暗日” 博客,请务必保留此出处http://darksun.blog.51cto.com/3874064/1162476

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. 个人中心... 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

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

cppcheck使用指南

cppcheck使用指南Table of Contents1 cppcheck简介2 cppcheck使用3 cppcheck与其他软件的整合3.1 与VisualStudio的配合3.2 与TortoiseSVN配合1 cppcheck简介cppcheck是一个静态代码检查工具,支持c/ c++代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:自动

暗日 1万+

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

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

当用fopen读写打开文件时,请使用r+,而不是rw

C++标准中fopen函数的mode只有r,r+,w+,a,a+这几种类别,而没有rw这种类别. 如果尝试对用rw方式打开文件进行写操作,不同的编译器会有不同的处理方式.例如在linux下用gcc4.6.3把rw当成r来处理,会提示bad file descriptor在windows下用dev C++则只是将写文件函数返回失败,但是没有设置errno根据百度百科的说明,还有些编译器则能够把rw识

暗日 5081

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

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

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

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

为子shell设置变量值的两种方法

为子shell设置变量值有两种方法:一种很常见的方法是将变量export成环境变量,这样该变量就会被带到子shell中去了echo 'echo x=$x' > /tmp/echox chmod +x /tmp/echox x=Hi echo "x不是环境变量的情况下" /tmp/echox echo "x是环境变量的情况下" export x /tmp/echoxx不是环境变量的情况下 x= x是环

暗日 4252

保姆级教程:用Python+NumPy手把手模拟光学散射与记忆效应(附代码)

本文提供了一份详细的Python+NumPy教程,手把手教你模拟光学散射与记忆效应。从基础光波建模到散射介质实现,再到菲涅尔衍射和光学记忆效应验证,逐步构建完整的仿真系统。通过附带的代码示例,读者可以快速掌握计算光学仿真的核心技术,为医学成像、物理仿真等领域的研究提供实用工具。

weixin_30172941的博客 325

《WebSphereMQ基础教程》MQI笔记

一、MQI的基本数据类型 数据类型 <td width="477" valign="top" style="width:357.7pt;border:solid windowtext 1.0pt; border-left:none

暗日 3171

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

大数据审计常用的算法模型

数据预处理:用聚类算法(K-Means)对数据分组,缩小分析范围;异常初筛:用孤立森林/DBSCAN快速标记疑似异常样本;风险分级:用随机森林/XGBoost对疑似异常打分,确定核查优先级;关联深挖:用FP-Growth挖掘异常样本背后的人员/流程关联;文本佐证:用BERT分析相关合同/审批文本,获取舞弊证据。例如,某审计项目通过“K-Means分组→孤立森林标异常→FP-Growth找关联→BERT审合同”的流程,仅用1周就完成了过去3个月需10人团队的工作量,且挖出2起隐藏的串标舞弊案。

Yulay专栏 1069

shell中| ; &的优先级

| 的优先级要高于 ;date; who |wc 2016年 11月 14日 星期一 22:18:38 CST 1 5 45你会发现只有who的结果送到了wc命令. 括号可以用来组合命令(date;who) |wc 2 11 88date与who的结果都送到了wc命令 & 的优先级高于 ;date sleep 5;date & date 201

暗日 2333

淘宝扫码登录避坑指南:如何避免异地登录风控并稳定获取Cookie(附Python代码)

本文深入解析了淘宝扫码登录的风控机制,提供了从环境仿真到代码实现的完整避坑指南。通过精细化伪装请求头、管理会话与IP策略,并附上Python示例代码,帮助开发者稳定获取Cookie,有效避免异地登录风控,实现自动化流程的可靠集成。

l6m7n8的博客 592

《Python网络编程基础》笔记

python网络编程基础                           ================== Author: lujun9972 Date: 2013-03-08 22:29:20 CST Table of Contents ================= 1 客户端与服务器端     1.1 使用inetd或xinetd     1.2

暗日 1764

【ESP32-IDF笔记】20-配置以太网网络(W5500)

基于ESP32IDF和官方的ethernet驱动,配置W5500以太网驱动芯片,实现ESP32的有线网络

别看了,就这些信息 3471

使用W5500与外网通信故障解决(MAC地址问题)

在蒲城项目的调试时,AMS500发现一个致命的问题,就是:在局域网跨网段通信时候和中心服务器不能通信,但是在一个HUB下是没有问题的,以前的串口服务器有过类似的问题出现,解决方法说是芯片的问题,结果也不了了之,换了芯片正常。 我们的网络通信芯片选择W5500,其中的MAC地址采用的是CPU的序列号作为Mac地址的问题就出在这,我们在使用的时候MAC地址的第一个必须是偶数,我们忽视了。 现象描...

zxm8513优快云博客 7755

lua与javascript的相似之处

1. lua中的table,类似于javascript中的Array(数组,同时也是Object,可以当Map用) address={1,2,3} address.Street="Wyman Street" address.Contry="USA" print(address.Street,address["Contry"]  2. 与javascript类似,所有的变量默认为全局变量.lua

暗日 1739

ERROR conda.core.link:_execute(502): error occurred while installing conda-forge::setuptools 解决方案

本文主要介绍了ERROR conda.core.link:_execute(502): An error occurred while installing package mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge::setuptools-65.5.1-pyhd8ed1ab_0.FileNotFoundError(2, 系统找不到指定的文件。, None, 2) 解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

3 curses库窗口(WINDOW)处理

3 curses库窗口(WINDOW)处理 ~~~~~~~~~~~~~~~~~~~~~~~~~~~3.1 什么是窗口 =============== * 窗口是屏幕上的一块区域,在其上面可以进行各种输出及其操作. * 窗口可以位于标准屏幕的任意位置,窗口之间可以相互重叠. * 窗口可以同时包含与它们相关的子窗口,任何在父窗口与子窗口重叠区域的变化会同时影响到他们中的任何一个3.2 窗口操作

暗日 1635

【系统架构设计师】二十六、论文写作要点

论文写作概述:时间所需120分钟;题目可四选一,必有一题考察软件架构,总有一款适合你;考察形式是机试(开心,再也不用担心字丑了),约2500字。

帅次的博客 4599

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

什么样的类可以作为map的键值

在学习C++的map的时候,写了一段代码   #include  #include  using namespace std;  class A {     public:     A(){cout"A created"    A(const A& a){cout"A creat

暗日 1629

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

图形环境下的shell编程

目录 select dialog tput notify-send kdialog zenityselectselect命令可以创建很简单的菜单,然后获取输入的答案.select命令的格式为:select variable in list do commands done 其中list参数是由空格分隔的文本选项列表,这些列表构成了整个菜单. select命令会将每个列表现实成一个带编号的选项

暗日 1175

VC中sqlite的使用

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

perl语言学习记录

perl入门                                ======== Author: Date: 2012-12-05 23:05:55 中国标准时间 Table of Contents ================= 1 perl的变量     1.1 变量声明         1.1.1 声明变量类型         1.1.2 声明

暗日 967

2 curses库IO处理--清屏函数

2.6 清屏函数 =============/** @brief 清除屏幕上的所有字符,并且将光标移动到屏幕的原点 @note clear()会自动调用clearok()函数,这使得clear()函数能够清除物理屏幕上的那些curses无法识别的垃圾 @see wclear() */ int clear(); /** @brief 清除屏幕上所有字符 @note 它不会自动调用c

暗日 954

《Python核心技术第二版》笔记

* Note 1. 数字、字符串和元组是不可变的;列表和字典是可变的 2. 可作用于多种类型的通用型操作都是以内置函数或表达式的形式出现的;但是类型特定的操作是以方法调用的形式出现的。 3. 方法也是函数属性 4. 可以调用内置的dir函数,将会返回一个列表,其中包含了对象的所有属性(方法也是属性) 5. dir函数简单地给出了方法的名称。查询他们做什么,可以传递给help函数 6.

暗日 881

epipe的实现原理是什么?

最近发现一个好玩的脚本,可以在管道中调用外部编辑器来编辑内容:https://github.com/cute-jumper/epipe5它的实现方式只有寥寥数行: #$!/usr/bin/env bash -*- mode: sh; -*- tty="/dev/$(ps -o tty= -p $$)" temp_file=$(mktemp) default_edito

暗日 830
上一篇: &lt;More Effective C++&gt;笔记--基础
下一篇: &lt;More Effective C++&gt;笔记--异常
darksun9972
博客等级 码龄19年 42粉丝 399原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值