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++笔记 的相关文章

  • Linux_note 命令grep,sed,awk

    1 grep 过滤出指定的行 grep cinvABC 39 word 39 filename color 把匹配到的关键词用红色标识 如 xff1a grep color 39 root 39 etc passwd c xff1a 打印符
  • linux note

    目录 快捷键 符号含义 系统目录颜色 系统根目录含义 ls al cd set env export source exec 快捷键 打开终端的快捷键的为 Ctrl 43 Alt 43 T 关闭终端的快捷键为 Ctrl 43 D 符号含义
  • linux error note

    undefined reference to 96 wrong size cmpxchg 39 reason gcc 版本不兼容 xff0c 更换新版试试 在开发板和LINUX间用NFS挂载已成功 xff0c 但文件却看不到 xff1f r
  • A Survey on Concept Drift Adaptation Note

    A Survey on Concept Drift Adaptation Abstract Concept drift primarily refers to an online supervised learning scenario w
  • ML-Leaks Note

    ML Leaks Model and Data IndependentMembership Inference Attacks and Defenses onMachine Learning Models xff08 机器学习模型上与模型和
  • [深度学习]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 机器学习
  • SAP有用的NOTE(持续更新)

    目录 2421240 Portal is not loaded on Chrome 56 or higher 66971 Supported SAP GUI platforms 66971 Supported SAP GUI platfor
  • 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
  • ubuntu 安装360浏览器

    ubuntu 安装360浏览器 推荐一个我自己做的普法公众号 大可说法律 有法律方面咨询的可以关注 因为之前收藏的书签都在360浏览器 为了方便 我找到了下载360浏览器的方法 官方下载 https browser 360 cn se li
  • 1P+N

    1p n是什么意思 单极二线 就是 一个单片空气开关 和一个漏电保护模块组合在一起的开关 火线 零线一起进出组合开关 当漏电发生时漏电模块带动空气开关跳闸 火线和外网电断开 但是零线是不断开的
  • 如何考虑BLL层和DAL层的日志

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

    以一个简单的例子来说明 var developersUsingCSharp from d in developers where d Language C select d Name 1 提供对IEnumerable
  • Spring DataBinding

    1 用 ModelAttribute注释方法 1 1 ModelAttribute和 RequestMapping同时注释一个方法 span style font size 14px RequestMapping method Reques
  • Using LocalDB with Full IIS

    使用了LocalDB的ASP NET程序在部署到IIS时会报错 修改步骤如下 1 setProfileEnvironment需设置为true This requires editing applicationHost config file
  • 「学习笔记」torchvision.datasets.MNIST 参数解读/中文使用手册

    DataLoader使用手册 参数解读 PyTorch torch utils data DataLoader 中文使用手册 官方手册如下 torchvision datasets MNIST root train True transfo
  • 2013/1工作总结

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