c++基本使用--构造基类

2023-11-10

构造基类

派生类构造函数的要点如下:

1)创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数。
2)如果没以指定基类构造函数,将使用基类的默认构造函数。
3)可以用初始化列表指明要使用的基类构造函数。
4)基类构造函数负责初始化被继承的数据成员;派生类构造函数主要用于初始化新增的数据成员。
5)派生类的构造函数总是调用一个基类构造函数,包括拷贝构造函数。

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。
               
class A {        // 基类
public:
    int m_a;
private:
    int m_b;
public:
    A() : m_a(0) , m_b(0)                     // 基类的默认构造函数。
    { 
        cout << "调用了基类的默认构造函数A()。\n";  
    }
    A(int a,int b) : m_a(a) , m_b(b)     // 基类有两个参数的构造函数。
    { 
        cout << "调用了基类的构造函数A(int a,int b)。\n";  
    }
    A(const A &a) : m_a(a.m_a+1) , m_b(a.m_b+1)   // 基类的拷贝构造函数。
    {
        cout << "调用了基类的拷贝构造函数A(const A &a)。\n";
    }
               
    // 显示基类A全部的成员。
    void showA() { cout << "m_a=" << m_a << ",m_b=" << m_b << endl; }
};
               
class B :public A        // 派生类
{        
public:
    int m_c;
    B() : m_c(0) , A()             // 派生类的默认构造函数,指明用基类的默认构造函数(不指明也无所谓)。
    {
        cout << "调用了派生类的默认构造函数B()。\n";
    }
    B(int a, int b, int c) : A(a, b), m_c(c)           // 指明用基类的有两个参数的构造函数。
    {
        cout << "调用了派生类的构造函数B(int a,int b,int c)。\n";
    }
    B(const A& a, int c) :A(a), m_c(c)              // 指明用基类的拷贝构造函数。
    {
        cout << "调用了派生类的构造函数B(const A &a,int c) 。\n";
    }
           
    // 显示派生类B全部的成员。
    void showB() { cout << "m_c=" << m_c << endl << endl; }
};          
          
int main()
{

    A a1;
    A a2(a1);
    a2.showA();
    cout<<"初始化列表和拷贝构造函数的测试结束。。。"<<endl;
    cout<<"-----------"<<endl;

    B b1;                 // 将调用基类默认的构造函数。
    b1.showA();     b1.showB();
       
    B b2(1, 2, 3);      // 将调用基类有两个参数的构造函数。
    b2.showA();     b2.showB();
            
    A a(10, 20);      // 创建基类对象。
    B b3(a, 30);      // 将调用基类的拷贝造函数。
    b3.showA();     b3.showB();
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++基本使用--构造基类 的相关文章

  • Taglib:性能和崩溃问题

    我在 Qt 应用程序中使用 taglib 库 1 7 2 从音乐文件夹中读取 mp3 文件的一些元数据 问题是我发现它非常慢 例如 这是代码 QString path C Music QDir d path QStringList file
  • 如何使用 LINQ ForEach 更改 List

    我有一个List
  • HTML 文档

    有没有一个工具可以从 VS2010 生成的 XML 文档文件生成 HTML 页面 我在谷歌上搜索了这样的工具 但没有找到 我下载并安装了SandCastle 但我不明白如何使用它 尝试使用Sandcastle 帮助文件生成器 http sh
  • 获取当前用户的 NetworkCredential (C#)

    我正在尝试从控制台应用程序调用 Web 服务 并且我需要向客户端提供System Net NetworkCredential object 是否有可能创建一个NetworkCredential启动应用程序的用户的对象而不提示输入用户名 密码
  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 用 C# 中的字典中的值替换字符串中的单词

    我有一个简单的dictionary像这样 var fruitDictionary new Dictionary
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • 在 C/C++ 中绘制填充椭圆的简单算法

    在SO上 找到了以下绘制实心圆的简单算法 for int y radius y lt radius y for int x radius x lt radius x if x x y y lt radius radius setpixel
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 命令中带空格的 Windows C 系统调用

    我无法使用名称和参数中的空格进行系统调用 例如 system c program files something example exe c my files example txt 我尝试过各种我知道的方法来逃避 但没有任何效果 我努力了
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 从不同的线程访问对象

    我有一个服务器类 它基本上等待来自客户端的连接 在该类中 我创建了一个 NetworkStream 对象 以便能够从客户端接收字节 由于 NetworkStream Read 方法不是异步的 这意味着它将等到从客户端读取字节才能继续执行类似
  • Json.net 将数字属性序列化为字符串

    我正在使用 JsonConvert SerializeObject 序列化模型对象 服务器期望所有字段都是字符串 我的模型对象具有数字属性和字符串属性 我无法向模型对象添加属性 有没有办法将所有属性值序列化为字符串 我必须只支持序列化 而不

随机推荐

  • JAVA面试常考

    1 自我介绍 讲下最有难度的项目 2 对线程安全的理解 3 比如有一个局部变量i 1 两个线程同时执行 是否线程安全 4 比如再有一个共享变量 如何保证线程安全 5 说说ThreadLocal 底层如何实现 6 hashmap实现原理 7
  • 【BATCHNORMALIZATION、LAYERNORMALIZATION、INSTANCENORMALIZATION和GROUPNORMALIZATION】

    总览 神经网络中有各种归一化算法 Batch Normalization BN Layer Normalization LN Instance Normalization IN Group Normalization GN 从公式看它们都差
  • ServerSocket 的建立与使用(多线程)

    1 main方法 package peixun public class MyServerSocket public static void main String args new ServerListener start 2 建立连接
  • 多元线性回归的梯度下降

    目录 1 线性回归的基本概念 2 线性回归算法 3 多元梯度下降算法 4 总结 1 线性回归的基本概念 在回归分析中 如果只包含一个自变量和一个因变量 且二者关心可近似用一条直线表示 则称该回归分析为一元线性回归分析 如果包含两个及两个以上
  • 多模态(图像和文本跨模态)分类

    文章目录 前言 一 数据集介绍 二 处理过程 1 处理图片文本标签数据 1 将label由消极 中立 积极的标签变成数字 0 1 2 并且将其保存在path2label字典中 2 分别将图像文件和文本文件形成列表 3 分别将文本内容 对应的
  • 计算机插本2a院校,广东省专插本2A院校有哪些

    满意答案 yandianhua 2012 12 23 采纳率 45 等级 12 已帮助 15307人 晨光英语考试团很荣幸为您解答 2011年广东省本科插班生招生院校名单 院校代码 院校名称 以下院校是2A线的 533 深圳大学 534 五
  • 刷题之455. 分发饼干 -----贪心初试

    假设你是一位很棒的家长 想要给你的孩子们一些小饼干 但是 每个孩子最多只能给一块饼干 对每个孩子 i 都有一个胃口值 g i 这是能让孩子们满足胃口的饼干的最小尺寸 并且每块饼干 j 都有一个尺寸 s j 如果 s j gt g i 我们可
  • 性能测试浅谈

    早期的性能测试更关注后端服务的处理能力 一个用户去访问一个页面的请求过程 如上图 数据传输时间 当你从浏览器输入网址 敲下回车 开始 真实的用户场景请不要忽视数据传输时间 想想你给远方的朋友写信 信件需要经过不同的交通运输工具送到朋友手上
  • 去除移动端h5的横向滚动条

    我的问题是 在移动端第一次访问h5页面时 页面尺寸被放大了一点 没有手机适配 所以出现了横向滚动条 手指缩小页面尺寸后 横向滚动条才消失 解决方案 在入口页面index html的标签里添加下面一行代码
  • Qt中的中信号槽与异步调用

    Qt中使用信号 槽机制处理跨对象之间的调用 该机制的好处有 1 使得调用关系的绑定和解除十分灵活 不必修改类成员函数代码 2 在不暴露更多全局变量的情况下实现跨命名空间调用 3 可以多个信号对应多个槽 也可以信号之间绑定 对应于GUI中的逻
  • python 使用for循环简单爬取图片(1)

    现在的网站大多做了反爬处理 找一个能爬的网站还真不容易 下面开始一步步实现 1 简单爬录目图片 1 import urllib request 2 import re 3 4 def gethtml url 5 page urllib re
  • Spring_AOP_0100_Annotation入门

    为了以后更好的实习 今天了解了一下spring的aop的基础知识 做了一些简单的测试 算入门aop吧 记录下来 方便以后查阅 spring的版本2 5 6 由于目前aspectj的aop比spring做得更出色 而且spring也提倡直接使
  • Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)

    1 简介 上一篇中介绍了如果想要同时发送多条请求 那么怎样才能让每条数据某些请求参数改变呢 这就用到了jMeter参数化 在实际测试场景中 我们往往还有这样的需求 登录后服务器响应的token作为下次请求的参数 这就是所谓的参数关联 当请求
  • impala目录

    文章目录 1 入门 2 shell命令使用 3 java操作 1 入门 2 shell命令使用 https blog csdn net qq 21383435 article details 84925144 3 java操作
  • 最新xcode打包IPA(完整详细图文)

    网上的xcode打包ipa教程大多太旧而且又不完整 所以整理了一个最新的完整详细的xcode打包APP的图文教程分享给小白到大神路上的你我 xcode打包IPA包之前先申请iOS证书 然后导入证书才能打包导出IPA包 分为5 步进行 1 申
  • SpringCloud(一)——微服务基础及简单微服务项目搭建

    单体应用开发 传统的web应用开发是将所有的功能模块都打包到一个包中一起部署运行 单体应用集成简洁部署简单 但是随着项目复杂的的增加 单体应用会变得越来越大越来越臃肿 每次进行小功能的更新都需要更新整个包重新部署 什么是微服务 微服务没有一
  • Design Compiler (九)——综合后的形式验证

    这里来讲一下formality的使用 貌似跟tcl和DC没有很强的联系 然而说没有联系 也是不正确的 在综合完成之后 可以进行形式验证 此外这里不是专门讲解formality的使用的 因此只会简单地实践一下它的用法 formality是Sy
  • 前端之HTML

    目录 1 编写一个HTML代码 2 HTML常见语法 2 1注释标签 2 2标题标签 2 3段落标签 2 4换行标签 2 5格式化标签 2 6图片标签 2 6 1img标签的其他属性 2 7超链接标签 2 7 1空连接 2 8列表标签 2
  • SpringBoot+Hibernate+Spring Data JPA+Maven入门

    整合SpringBoot 和 Hibernate 实现简单的CRUD 框架版本 SpringBoot 2 0 0 RELEASE Hibernate 5 2 14 Final pom xml文件
  • c++基本使用--构造基类

    构造基类 派生类构造函数的要点如下 1 创建派生类对象时 程序首先调用基类构造函数 然后再调用派生类构造函数 2 如果没以指定基类构造函数 将使用基类的默认构造函数 3 可以用初始化列表指明要使用的基类构造函数 4 基类构造函数负责初始化被