面向对象学习笔记(一)——C++构造函数后加冒号

2023-05-16

目录

一、初始化常量数据成员和引用数据成员

二、调用拥有一组参数的基类的构造函数


构造函数后加冒号是初始化表达式,有四种情况下应该使用初始化表达式来初始化成员:

1:初始化const成员;

2:初始化引用成员;

3:当调用基类的构造函数,而它拥有一组参数时;

4:当调用成员类的构造函数,而它拥有一组参数时。

一、初始化常量数据成员和引用数据成员

在A类中有两个数据成员,一个是常量(const)数据成员,一个是引用数据成员,并且在构造函数中初始化了这两个数据成员,但是这并不能通过编译,因为常量初始化时必须赋值,它的值是不能再改变的,与常量一样引用初始化也需要赋值,定义了引用后,它就和引用的目标维系在了一起,也是不能再被赋值的。所以C ++ ":" 后初始化的机制,使引用和常量数据成员变为可能的,A类的构造函数应为:

class A {
protected:
    const int a;
    int &b;
    A (int i, int j): a(i), b(j) {}
};

二、调用拥有一组参数的基类的构造函数

以命令模式为例:


//父类(抽象命令类)
class Command {
protected:
    Receiver receiver;
public:
    Command (Receiver rec){
        this.receiver = rec;
    }
    virtual void Execute() = 0;//调用执行者动作
};

//子类(具体命令类)
class ConcreteCommand: public Command {
public:
    ConcreteCommand (Receiver rec): Command (Receiver rec){
        //绑定和父类相同的receiver
    }
    void Execute (){
        receiver.Action();
    }
};

//Receiver类(动作执行者)
class Receiver {
public:
    void Action(){
    //执行
    }
};

解析:

若具体command类中receiver对象相同,可将receiver封装到父类( Command类)中,每次调用receiver时,需调用父类中的receiver对象,使用C ++ ":" 后初始化的机制

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

面向对象学习笔记(一)——C++构造函数后加冒号 的相关文章

  • 【UBUNTU】- 修改操作系统时间

    MFC 将DWORD类型转换成CString strTemp span class token punctuation span span class token function Format span span class token
  • 【Docker】部署环境

    64 toc 目录 本次任务概要 1 编写dockerfile 然后创建镜像2 运行容器测试3 镜像打包及解包4 docker 设置环境变量 任务流程具体操作说明 0 虚拟机环境及初始环境配置 初始方案 工作中需要将环境部署到麒麟操作系统上
  • 【kylin/ubuntu 】离线命令行基本操作

    Ubuntu赋予root权限 span class token number 1 span chmod u 43 w etc sudoers xff0c 修改完后就具备写的权利了 span class token number 2 span
  • ubuntu14.04 出现symbol lookup error

    通常在运行命令的时候有可能出现动态库的链接错误 symbol lookup error usr lib x86 64 linux gnu libgdk 3 so 0 undefined symbol cairo surface set de
  • 安装报错fatal error: Python.h: No such file or directory解决

    报错信息 aiohttp websocket c 6 20 fatal error Python h No such file or directory include 34 Python h 34 compilation terminat
  • Putty + Xming实现远程登陆Linux显示图形化界面

    一 Putty和Xming的简介 一般我们远程登录linux 服务器 xff0c 都是使用非加密的 telnet 或者加密的 ssh 这些登录方式有一个特点 xff1a 只能登录字符界面 xff0c 不能运行那些带有GUI界面的程序 有时候
  • 基于stm32与陀螺仪(mpu6050)的PID角度环算法,角度用OLED显示,使得智能车能在长时间跑直线和转直角弯,减小误差

    首先 xff0c 我做智能车用的是stm32f103c8t6作为主控芯片 xff0c 得到小车自身对于开始位置的三维变换角度所用的是mpu6050模块 xff0c 其与主控芯片采用I2C通信 此通信原理接下来会加入介绍资料 其次还有一个OL
  • 人物交互(human object interaction)论文汇总-2018年

    1 Detecting and Recognizing Human Object Interactions 1 1 总述 中心思想是以人为中心 假设是一个人的外表信息 xff08 姿态 衣服 动作等 xff09 是确定与他们交互的物体的有力
  • 一些面试题2.0

    红帽6的启动过程 1 xff0c bios加电自检 xff0c 检测硬件 xff0c 决定启动介质 xff0c 找到引导扇区 2 xff0c 读取并且执行第一个开机设备中的MBR的bootloader 3 xff0c 根据bootloade
  • 基于MATLAB的倒立摆系统控制

    摘要 倒立摆系统是由导轨 小车和各级摆杆组成 小车依靠直流电机施加的控制力 可以在导轨上左右移动 位移和摆杆角度信息由传感器测得 目标是使倒立摆在有限长的导轨上竖立稳定 达到动态平衡 由于倒立摆系统本身所具有的高阶次 不稳定 多变量 非线性
  • 枚举方法详解

    package test1 public enum Day SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY NOVALUE public static Day toDay S
  • Promise限制并发请求数量

    所谓并发请求 xff0c 就是指在一个时间点多个请求同时执行 当并发的请求超过一定数量时 xff0c 会造成网络堵塞 xff0c 服务器压力大崩溃或者其他高并发问题 xff0c 此时需要限制并发请求的数量 假如等待请求接口1000个 xff
  • 部署安装cobbler,实现批量安装CentOS7、Ubuntu17.04、Ubuntu18.04(快捷版)

    文章目录 一 部署安装cobbler1 编辑cobbler配置文件2 持续安装所需文件3 配置tftp4 安装pykickstart5 设置密码6 cobbler管理DHCP7 编辑启动应用服务脚本 二 镜像导入以及自动化文件必读须知1 C
  • IDEA中找不到maven插件Plugin‘ ‘ not found 解决

    1 lt artifactId gt maven compiler plugin lt artifactId gt lt version gt 3 8 0 lt version gt 等 报红 1 1首先要找设置 File Settings
  • 树莓派 安装 Ubuntu MATE18

    Ubuntu MATE18 树莓派 pi 64 raspberrypi span class token punctuation span span class token operator span sudo service cups s
  • Munkres 分配算法

    匈牙利方法 xff08 或 Kuhn 算法 xff09 是由4个基本步骤组成的迭代过程 该方法使用 最小行集 覆盖 操纵 成本矩阵的零点 xff0c 当所需的 最小行集 等于给定成本矩阵的维数时 xff0c 过程终止 Munkres 算法是
  • SORT 多目标跟踪算法笔记

    SORT 是一种简单的在线实时多目标跟踪算法 文章要点为 xff1a 以 IoU 作为前后帧间目标关系度量指标 xff1b 利用卡尔曼滤波器预测当前位置 xff1b 通过匈牙利算法关联检测框到目标 xff1b 应用试探期甄别虚检 xff1b

随机推荐

  • ros:kcf算法+行人检测 = 让机器人自动识别并追踪行人

    实现目标 xff1a 机器人检测到有人走过来 xff0c 迎上去并开始追踪 追踪算法使用kcf算法 xff0c 关于kcf追踪的ros库在github地址 https github com TianyeAlex tracker kcf ro
  • 人物交互(human object interaction)论文汇总-2019年

    1 Relation Parsing Neural Network for Human Object Interaction Detection 1 1 总述 提出一种关系解析神经网络RPNN xff0c 由两部分组成 xff1a 物体 身
  • ROS nodelet 使用详解

    本文以nodelet tutorial math为例来了解nodelet的原理及使用方法 xff0c 理论知识参考http blog csdn net zyh821351004 article details 52143309 代码地址 x
  • MPU6050

    简介 xff1a MPU6050是InvenSense 公司的 MPU6050 作为主芯片 xff0c 能同时检测三轴加速度 三轴陀螺仪 三轴角速度 的运动数据以及温度数据 利用 MPU6050 芯片内部的 DMP 模块 xff08 Dig
  • 字符串切割函数strtok、strtok_s、strtok_r的区别

    strtok函数 头文件 xff1a include lt string h gt 函数原型 xff1a char strtok char str const char delimiters 参数 xff1a str xff1a 待分割的字
  • VMware 虚拟机怎么识别不了ISO文件

    1 安装 a class baidu highlight href https www baidu com s wd 61 E8 99 9A E6 8B 9F E5 85 89 E9 A9 B1 amp tn 61 44039180 cpr
  • hadoop集群查看路径

    管理界面 xff1a http master 8088 HDFS 主界面 xff1a http master 50070 HDFS 文件界面 xff1a http master 50070 explorer html
  • Ubuntu20.04 通过VNC实现远程桌面连接

    前提 xff1a 工控机上预留至少三个以太网口 xff0c 一个接路由器 xff0c 一个接上位机 一 通过无线进行远程连接 1 了解被连接电脑的信息并设置无线连接的网络地址 优先连接无线网络 xff1a 网络地址 xff1a 192 16
  • 结束也是开始

    到昨天为止 精通ORACLE 10G 备份与恢复 算是告一段落了 xff0c 接下来准备学习一下性能调优方面的 xff0c 然后再回过来复习一下 精通ORACLE 10G 备份与恢复
  • TX2小结之CAN通信

    TX2上有2个CAN控制器 xff0c CAN控制器需要通过CAN收发器连接到物理总线上 具体参阅原理图和相关技术参考手册 下载地址 xff1a https developer nvidia com embedded downloads 1
  • ROS中启用CAN

    1 源码安装canopen 从官网下载canopen至Ubuntu xff0c 下载地址 xff1a https github com ros industrial ros canopen tree kinetic devel 终端输入 x
  • ROS节点中的CAN命令

    前言 xff1a 由于在使用TX2的过程中 xff0c 需要使用CAN通讯的方式使我的机器人底盘与TX2进行命令收发 xff0c 而我的其他传感器都建立在ROS框架下 xff0c 为了以后能使数据交互我希望把底盘数据也放到我的ROS框架里面
  • ROS学习总结十一:Gazebo物理仿真环境搭建二:自己搭建一个机器人在gazebo中运动。

    之前使用的是shenlan的源码实现了一系列的功能 xff0c 那么根据之前所学习是否可以使用一个自己的机器人实现gazebo仿真 这里我们尝试一下 xff1a 1 按照之前的方式我们给自己的机器人添加碰撞属性以及惯性属性 xff0c 机器
  • ROS学习总结十六:订阅一个话题同时发布一个话题(subscriber and publisher)

    在使用ROS的时候 xff0c 我们会用到很多节点 xff0c 例如之前的gazebo仿真 hector建图 键盘控制等 xff0c 这些节点的消息传递主要靠的是话题与订阅 在很多程序中 xff0c 我们可能需要订阅一些数据 xff0c 同
  • 从ORB_SLAM中发布ROS位姿话题(stereo)

    之前调试了ORB SLAM2的gazebo仿真 xff0c 现在需要在ROS中使用到ORB SLAM2的位姿 xff0c 但是ORB SLAM2本身是没有位姿的ROS话题输出的 xff0c 参考了github上相关问题的探讨 xff1a G
  • 1.3如何配置launch与lua文件

    第一步 了解bag文件 播放bag文件需要在bag的文件夹内启动五个终端 1 第一个终端执行roscore 2 第二个终端执行rosbag info rslidar outdoor gps bag了解bag中topic的名称与类型 3 第三
  • ROS学习总结十七:自定义消息的使用

    在初学ROS时 xff0c 一般都是使用的ROS标准库 xff0c 包括激光电云laserscan 位姿posestamp等 这些库基本满足了我们的日常使用 xff0c 但是在开发时 xff0c 难免会遇到一些情况使用标准库不太合适 xff
  • [stm32]UART串口利用空闲中断接收一帧不定长数据

    查阅网上的方法有很多 xff0c 这里记录一下自己用的一种方式 xff0c 默认开启UART串口中断 xff0c cubemx生成工程代码 1 定义发送和接收全局数组 xff0c 用于缓存数据 RX frame size xff1a 接收到
  • JavaScript入门笔记(一)

    目录 一 JavaScript xff08 一 xff09 特点 xff08 二 xff09 作用 xff08 三 xff09 网页中插入JavaScript脚本的方法 1 行内式 2 嵌入式 3 链接式 一 JavaScript xff0
  • 面向对象学习笔记(一)——C++构造函数后加冒号

    目录 一 初始化常量数据成员和引用数据成员 二 调用拥有一组参数的基类的构造函数 构造函数后加冒号是初始化表达式 xff0c 有四种情况下应该使用初始化表达式来初始化成员 xff1a 1 xff1a 初始化const成员 xff1b 2 x