C++笔记

2023-10-27

C++中的cast:

1) const_cast

2) dynamic_cast

3) static_cast

4) reinterpret_cast

C++中variable的definition, initialization, assignment

     direct-initialization:   int ival(1024);

     copy-initialization: int ival=1024;

这一点与C#等有一些不同。

C#在定义的同时有默认的初始化操作,如int ival;在C#中默认会初始化为0。而在C++中只是变量的definition.

对于build-in 类型,这两者可以认为没有区别,对于class type,这两者是不同的。对于class type只能使用direct initialization. 也就是说direct-initialization在内部调用的是构造函数,而copy-initialization在内部调用的是assignment操作。

另外一点就是理解C++中initialization(copy constructor)与assignment有一些不同:

1) 赋值操作是在两个已经存在的对象之间进行的,而初始化是要创建一个新的对象,并且其初值来源于一个已存在的对象。

2) 编译器会区分这两种情况,初始化的时候调用copy constructor, 如果类中没有拷贝构造函数,则编译器会提供一个默认的,这个默认的拷贝构造函数只是简单的复制类中的每个成员。赋值的时候调用重载的赋值操作符。

以string为例来说明initialization与assignment的区别:

class String

{

    public:

    String (const char* init);

    ~String;

    String(const String &that);

    String &operator=(const String &that);

    String &operator=(const char* str);

    void swap(String &that);

    friend const String operator+(const String &, const String  &);

    friend bool operator <(const String &, const String &);

    //...

    private:

    String(const char*, const char*);

    char s_; 

}

Initialization :

String::String(const char* init)

{

     if(!init) init="";

     s_=new char[strlen(init)+1];

     strcpy(s_, init);

}

Deconstructor:

String::~String()

{

   delete[] s_;

}

Assignment:

String &String::operator=(const char* str)

{

   if(!str) str="";

   char* tmp=strcpy(new char[strlen(str)+1],str);

   delete[] s_;

    s_=tmp;

    return *this;

}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++笔记 的相关文章

  • 群晖note station client 闪退(Mac OS Monterey)

    问题 xff1a 升级后如题 解决 xff1a 下载官方Bug 修正版 xff0c 覆盖安装 xff01 ftp Synology RackStation 出处 xff1a Note Station Client not working o
  • [深度学习]note for Machine Learning: An Algorithmic Perspective, Second Edition(Ch01-Ch03)【部分勘误+代码待补充】

    Machine Learning An Algorithmic Perspective Second Edition Part 1 1 绪论1 1 如果数据有质量 xff0c 地球将成为黑洞1 2 学习1 2 1 机器学习 1 3 机器学习
  • 静态测试 vs 动态测试

    静态测试 静态测试又可分为代码走查 Walkthrough 代码审查 Inspection 技术评审 Review 代码走查 Walkthrough 开发组内部进行的 采用讲解 讨论和模拟运行的方式进行的查找错误的活动 代码审查 Inspe
  • BackgroundWorker

    BackgroundWorker的事件响应函数 private void backgroundWorker1 DoWork object sender DoWorkEventArgs e BackgroundWorker worker se
  • C++笔记

    C 中的cast 1 const cast 2 dynamic cast 3 static cast 4 reinterpret cast C 中variable的definition initialization assignment d
  • Reference vs Pointer

    参考自Dan Saks的文章 An Introduction to References References and const The key insights I believe the key insight into why C
  • python 单例

    1 使用模块 from AA import a 2 使用 new 在Python中 可以通过重写类的 new 方法来实现单例模式 单例模式是一种设计模式 它保证一个类只有一个实例 并提供一个全局访问点 class Singleton obj
  • 把Collection转化为XML

    IList
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa
  • C++ Primer Exercise 5.18

    Understanduing the difference between C and C therefore know the computer language deeper vector
  • 如何考虑BLL层和DAL层的日志

    DAL层日志 DAL层与数据库交互 日志记录的目的是 1 发生异常时通过日志查找原始信息 便于快速定位原因 2 对于一些复杂的事务可以通过对日志的分析来发现错误的具体位置 BLL层日志 BLL层与UI交互 虽然UI已经对用户输入进行了一些过
  • AI三大主义:符号主义、联结主义、行为主义

    一 符号主义 symbolicism 符号主义 symbolicism 逻辑主义 Logicism 心理学派 Psychlogism 计算机学派 Computerism 其原理主要为物理符号系统 即符号操作系统 假设和有限合理性原理 早期的
  • Into Clause VS Let Clause

    1 Into Clause 用来将select join 或者group的结果存储到一个临时变量中 目的 在之后的查询中需要使用此结果 例如 var developersGroupedByLanguage from d in develop
  • 博士的归宿

    1 高校 2 央企的研究院 3 外企的研发机构
  • 关于链表的三个常用算法

    找到环的第一个入口点 static public SinglyLinkedListNode
  • Java springboot自定义bean加载控制顺序在flyway执行后

    在springboot中 我们经常需要在系统启动时执行一些自定义逻辑 例如将数据库中的值读取给bean使用等等 一般采用自定义bean的初始化流程方式实现 方式有许多种 但假如这个bean要被其他模块使用时保证已经被初始化过 就不能简单的采
  • 多线程 并发编程与异步方法

    1 Parallel Programming中的PLINQ Parallel Class与Task Parallelism的特点 并发编程的内容类似于Google的Map Reduce的算法 多线程的着眼点是线程的互斥 同步等 而并行编程的
  • 2013/1工作总结

    这个月抽时间看了C Primer一书 主要原因是没有基础知识直接看ATL的代码根本不可能 感想之一就是程序员也许必须学习一下C 只学习Java或者C 可能对语言的了解有限 造成对某些问题一直没有透彻的理解 当然了 最后发现还要好好学习理解编
  • Association Class VS Full Class

    详细分析请见 http etutorials org Programming UML Chapter 6 Class Diagrams Advanced Concepts Association Class 1 关联类的必要性 关联类隔离了
  • ADC 读取电位器旋钮,用回差消除临界值档位跳动

    就是比如 用电位器当旋钮做风扇调速 划分出10 个速度档位 对应10 个ADC 转换结果的阈值 如果直接比较阈值 当旋钮拧到临近阈值的地方时 ADC 结果的微小跳动会导致风扇档位在两个级别之间不停左右横跳 因此想到了利用回差来消除抖动 回差

随机推荐

  • 【转载】VC常用小技巧(2)

    项目 如何干净的删除一个类 1 先删除项目中对应的 h和 cpp文件 选中后用 Delete键删除 2 保存后退出项目 到文件夹中删除实际的 h和 cpp文件 3 删除 clw文件 4 重新进入项目 进行全部重建 rebuild all 如
  • 批处理常用命令及用法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 批处理常用命令及用法大全 阅读本文需要一定的dos基础概念 象 盘符 文件 目录 文件夹 子目录 根目录 当前目录每个命令的完整说明请加 参数参考微软的帮助文档可以看到 在
  • 前端 - 实习两个星期总结

    文章目录 吐槽 总结 新人建议 项目学习到的 今天已经是菜鸟实习的第二个星期了 怎么说呢 反正就是进的一个不大不小的厂 做着不难不易的事 菜鸟现在主要做的就是适配 现在就来总结一下 不过这之前 菜鸟不得不吐槽一波 吐槽 1 菜鸟进的是一家国
  • kvm常见故障及解决

    一 启动虚拟机Connection reset by peer virsh start vmhost1error Failed to start domain vmhost1error Unable to read from monitor
  • 浙江大学计算机学院最权威的老师,浙江大学计算机科学与技术专业导师介绍:郑能干...

    姓名 郑能干 性别 男 职称 副教授 在岗性质 全职在岗 学院 系 计算机科学与技术学院 招生资格类别 硕士生导师 研究方向 人工智能嵌入式系统神经信息工程普适计算 Email zng cs zju edu cn 个人简介 郑能干 男 19
  • 【计算机视觉】深度学习框架-Keras

    文章目录 1 从零开始训练网络 1 1 搭建网络基本架构 1 2 构建训练网络 1 3 启动训练网络并测试数据 2 用Keras实现一个简单神经网络 2 1 Keras简介 2 2 MNIST手写数字识别 详细解释步骤 2 2 1 数据的加
  • C++内存管理(3)——内存池

    1 默认内存管理函数的不足 为什么使用内存池 利用默认的内存管理操作符 new delete 和函数 malloc free 在堆上分配和释放内存会有一些额外的开销 系统在接收到分配一定大小内存的请求时 首先查找内部维护的内存空闲块表 并且
  • [tensorflow] eval和run的区别

    在tensorflow中 eval和run都是获取当前结点的值的一种方式 在使用eval时 若有一个 t 是Tensor对象 调用t eval 相当于调用sess run t 一下两段代码等效 float tensor tf cast tf
  • 毕设系列 - java web 项目获取方式说明

    文章目录 1 项目获取地址 2 项目包含内容 2 1 整体项目内容 3 样例 基于java web的网上招聘系统的设计与实现 3 1 系统研究背景 3 2 系统研究意义 3 3 开发环境 3 4 系统设计 3 4 1 系统设计模块 3 4
  • AOSP>设计>测试>(第三节)兼容性测试套件CTS

    AOSP gt 设计 gt 测试 gt 兼容性测试套件CTS 第三节 兼容性测试套件 CTS 概览 工作流程 测试用例的类型 涵盖的领域 设置CTS 物理环境 蓝牙 LE 信标 相机 GPS GNSS WLAN 和 IPv6 Wi Fi R
  • 基于MATLAB实现语音信号加噪与去噪的低通滤波器

    基于MATLAB实现语音信号加噪与去噪的低通滤波器 一 概述 在语音信号处理中 由于外界环境的干扰或传输过程中的噪声引入 可能导致语音信号质量下降 为了提高语音信号的清晰度和可懂度 需要对信号进行去噪处理 本文将介绍如何使用MATLAB实现
  • 启明智显分享

    提示 启明智显专为智能产品提供一站式彩屏显示 连接 云端服务 APP软件开发 维护等解决方案 帮厂商快速实现硬件的智能化 作为启明云端旗下方案公司 我们用心整理了开发小伙伴在开发过程中可能会遇到的问题以及快速上手的简明教程 同时也用心整理了
  • 最小二乘法 python实现

    最小二乘法适用于对处理的一堆数据 不必精确的经过每一点 而是根据图像到每个数据点的距离和最小确定函数 最小二乘法逼近的最简单的例子是根据一组观测值对 x1 y1 x2 y2 xn yn 来拟合一条直线 直线的数学表达式为 下面是一元线性拟合
  • Qt版本的选择与安装

    Qt简介 Qt是当下最流行的C 开发库 也是当下最流行的跨平台开发框架之一 可开发桌面端应用 移动端应用以及嵌入式端应用 可以说能支持的系统基本都支持 它可以做GUI但功能远不止GUI 我们用的最多的还是桌面端和嵌入式端的应用 移动端应用流
  • 最新Android Studio解决> No cached version of org.javailable for offline mode.

    问题 A problem occurred configuring root project kaikeba gt Could not resolve all artifacts for configuration classpath gt
  • 报错:Dependency annotations: {@org.springframework.beans.fact}

    我当时检查了下面的所有内容发现都没有错 最后在第五个监听器打错了 这给我气的 大家自己对照下面的内容仔细看看自己哪里错了吧 类检查方面 1 是否在加了 Controller Repository Service 注解 Controller
  • MySQL JDBC编程

    文章目录 什么是JDBC编程 JDBC的工作原理 JDBC的优点 JDBC的使用 插入操作 修改操作 删除操作 查询操作 什么是JDBC编程 JDBC编程就是用Java代码来操作数据库 JDBC即Java Database Connecti
  • STM32 - GPIO 详解

    GPIO 详解 文章目录 GPIO 详解 1 GPIO 是什么 2 STM32 引脚分类 3 GPIO 内部结构 3 1 保护二极管 3 2 上下拉电阻 3 3 P MOS 和 N MOS 3 4 输出数据寄存器 3 5 复用输出功能 3
  • vue2和vue3的区别

    原文地址 https www cnblogs com limou956259 p 17195546 html 1 双向数据绑定原理不同 vue2 vue2的双向数据绑定是利用ES5的一个API Object definePropert 对数
  • C++笔记

    C 中的cast 1 const cast 2 dynamic cast 3 static cast 4 reinterpret cast C 中variable的definition initialization assignment d