【C++】类:构造函数、默认构造函数模板

2023-11-19

目录

模板一:两个类名构造函数,一个传参,一个不传参

 模板二:成员初始化列表(推荐,性能高)

构造函数、默认构造函数的作用:

 构造函数:传一些参数进来,用于给类的成员变量赋值。

默认构造函数:程序员给类的成员变量设定一个默认值,也是用于给类的成员变量赋值。如果没传参就用默认值给成员变量赋值。如果传了参就用传进来的参数给成员变量赋值。
 

模板一:构造函数用 类名(参数列表){},默认构造函数用 类名(){成员变量=默认值};

模板一:两个类名构造函数,一个传参,一个不传参。

#include <iostream>
using namespace std;

class 类名
{
public:
    类名(传入的参数列表 int a,int b,int c,....) {
        类成员变量A = 传参a;
        类成员变量B = 传参b;
        类成员变量C = 传参c;
    }
    类名() {
        类成员变量A = 0;
        类成员变量B = 0;
        类成员变量C = 0;
    }

         ...一些表达功能的类成员函数
    }
private:
    int 类成员变量A; 
    int 类成员变量B;
    int 类成员变量C;   
};


int main()
{
    类名 对象名(实参表);
    类名 对象名;
    类名 *指针变量名 = new 类名(实参表);
    类名 *指针变量名 = new 类名;
}

 在建立对象的同时,采用构造函数给数据成员赋值,通常有以下两种形式。此外加不加实参表都可以,不加的话按默认构造函数赋值。

类名 对象名[(实参表)]
Score op1(99, 100);
op1.showScore();
类名 *指针变量名 = new 类名[(实参表)]
Score *p;
p = new Score(99, 100);
p->showScore();
-----------------------
Score *p = new Score(99, 100);
p->showScore();

说明:

  1. 构造函数的名字必须与类名相同,否则编译程序将把它当做一般的成员函数来处理。
  2. 构造函数没有返回值,在定义构造函数时,是不能说明它的类型的。
  3. 与普通的成员函数一样,构造函数的函数体可以写在类体内,也可写在类体外。
  4. 构造函数一般声明为共有成员,但它不需要也不能像其他成员函数那样被显式地调用,它是在定义对象的同时被自动调用,而且只执行一次。
  5. 构造函数可以不带参数。

 

实例:

#include <iostream>
using namespace std;

class Box
{
public:
    Box(double len, double bre, double hei) {
        length = len;
        breadth = bre;
        height = hei;
    }
    Box() {
        length = 0;
        breadth = 0;
        height = 0;
    }

    double getVolume(void){
        return length * breadth * height;
    }
    Box operator+(const Box& b){ // 重载 + 运算符,用于把两个 Box 对象相加
        Box newbox;
        newbox.breadth = b.breadth + this->breadth;
        newbox.height = b.height + this->height;
        newbox.length = b.length + this->length;
        return newbox;
    }
private:
    double length;      // 长度
    double breadth;     // 宽度
    double height;      // 高度
};
// 程序的主函数
int main()
{
    Box Box1(6.0, 7.0, 5.0);// 声明 Box1,类型为 Box
    Box Box2(12.0, 13.0, 10.0);// 声明 Box2,类型为 Box
    Box Box3;                // 声明 Box3,类型为 Box
    double volume = 0.0;     // 把体积存储在该变量中

    // 把两个对象相加,得到 Box3
    Box3 = Box1 + Box2;
    // Box3 的体积
    volume = Box3.getVolume();
    cout << "Volume of Box3 : " << volume << endl; 

    return 0;
}

 模板二:成员初始化列表(推荐,性能高)

1、带默认参数的(相当于默认构造函数+构造函数)

    Box(double len = 0, double bre = 0, double hei = 0) :length(len),breadth(bre),height(hei){}

double len=0 意思是如果没有传参,len=0, 即length=0。相当于默认构造函数。

length(len) 意思是如果有传参len,length赋值为len。相当于构造函数。

类名::构造函数名([参数表])[:(成员初始化列表)]
{
    //构造函数体
}
class Box
{
public:
    Box(double len = 0, double bre = 0, double hei = 0) :length(len),breadth(bre),height(hei){}

private:
    double length;      // 长度
    double breadth;     // 宽度
    double height;      // 高度
};

2、不带默认参数的(相当于构造函数)

类名::构造函数名([参数表])[:(成员初始化列表)]
{
    //构造函数体
}
class Box
{
public:
    Box(double len, double bre, double hei) :length(len),breadth(bre),height(hei){}

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

【C++】类:构造函数、默认构造函数模板 的相关文章

随机推荐

  • IC卡和ID卡

    定义 最常用的感应卡分为ID卡和IC卡两种 IC卡全称集成电路卡 Integrated Circuit Card 又称智能卡 Smart Card 可读写 容量大 有加密功能 数据记录可靠 使用更方便 如一卡通系统 消费系统等 ID卡全称身
  • java.sql.SQLException: Statement.executeQuery() cannot issue statements that do not produce result

    java sql SQLException Statement executeQuery cannot issue statements that do not produce result sets 解决 看看自己的java代码里的 sq
  • Linux内核内存检测工具KASAN

    KASAN k z n KASAN 是 Kernel Address Sanitizer 的缩写 它是一个动态检测内存错误的工具 主要功能是检查内存越界访问和使用已释放的内存等问题 KASAN 集成在 Linux 内核中 随 Linux 内
  • 项目管理 附下载地址

    本书对现代项目管理的基本管理过程 知识模块 工具和方法等进行了全面的介绍 全书共有十二章 每部分都力求深入浅出 站在项目经理的角度 考虑其责任大于权力的现实 并结合时代特征 学习项目管理的软技能和硬技能 通过实际案例 高效的工具和模板 使读
  • 作为字典数据获取枚举值

    RequestMapping value getAmmeterType method RequestMethod GET ResponseBody ApiOperation notes 获取电表类型 value 获取电表类型 public
  • Python程序异常处理

    一 什么是异常 异常就是程序运行时发生错误的信号 在程序由于某些原因出现错误的时候 若程序没有处理它 则会抛出异常 程序也的运行也会随之终止 程序异常带来的问题 1 程序终止 无法运行下去 2 如果程序是面向客户 那么会使客户的体验感很差
  • 【从小项目学图片处理】#1 答题卡识别

    说明 项目皆参考于网上 代码也有大部分参考原文 仅用于学习和练习图像处理操作 项目原文 Bubble sheet multiple choice scanner and test grader using OMR Python and Op
  • 微信小程序中text中如何换行_在手机中使用微信小程序

    微信小程序 简称小程序 英文名Mini Program 是一种不需要安装就可以使用的程序 内嵌在微信当中 小程序依赖于微信环境 但又不止于微信 微信提供一个入口 然后通过独立窗口 进程来运行小程序 工具 原料 微信 方法 步骤1 小程序入口
  • 再见 BeanUtils 欢迎 mapstruct

    前言 为了更好的进行开发和维护 我们都会对程序进行分层设计 例如常见的三层 四层 每层各司其职 相互配合 也随着分层 出现了VO BO PO DTO 每层都会处理自己的数据对象 然后向上传递 这就避免不了经常要将一个对象的属性拷贝给另一个对
  • 使用SQL进行递归查询

    使用SQL进行递归查询 在工作当中会经常用到递归 比如菜单的展示 一种方法就是从 数据库中取出所有的数据 然后在程序中循环获取符合条件的数据 另外一种方法就是使用SQL直接读取符合条件的数据 对于递归查询 T SQL和PL SQL进行了不同
  • Ubuntu 18.04 + DSO-slam配置、运行数据集、摄像头实时运行

    一 写在前面 前段时间老师布置了课程任务 让全班同学分组配置和运行slam 我们组选择的是DSO slam 由于选择的时候并没有对slam并没有什么了解 只有老师上课时一些科普性质的讲解 所以相当于是从0开始 这一周一直用空闲时间配置环境
  • 【GPLT】【2022天梯赛真题题解】

    L1 1 今天我要赢 5分 题目描述 2018 年我们曾经出过一题 是输出 2018 我们要赢 今年是 2022 年 你要输出的句子变成了 我要赢 就在今天 然后以比赛当天的日期落款 输入格式 本题没有输入 输出格式 输出分 2 行 在第一
  • RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

    1 大多数是配置问题 修改rocketmq文件夹broker conf 2 配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈 主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的 Ro
  • java之二进制与数据类型(二)

    一 各数据类型的最大值和最小值 整数 以byte为例 我们知道 byte共有8个bit位 最大值是0111111 最小值是10000000 用十进制来表示就是 128 127 即 2 7 2 7 依照上面的推理方式可知 总结下表 数据类型
  • Redis学习总结

    Redis Redis 是完全开源免费的 遵守BSD协议 是一个高性能的key value数据库 Redis支持数据的持久化 可以将内存中的数据保存在磁盘中 重启的时候可以再次加载进行使用 Redis的优势 性能极高 Redis读的速度可达
  • 格雷码介绍与应用

    注 学习 交流就在博主的个人weixin公众号 FPGA动力联盟 留言或直接 博主weixin fpga start 私信 学过晶体管知识的朋友们都知道 数据位跳变就相当于硬件电路中的晶体管翻转 许多位同时跳变就相当于多个晶体管同时翻转 会
  • SHELL 文件内容的行数打印、统计,空行处理,每行字段的逆序输出

    file txt 用来实验的文本文件 how they are implemented and applied in computer that is your bag is this your bag to the degree or e
  • 服务器系统怎么重新启动,服务器win7系统不能重新启动

    1 电脑关不机 有很多因素 有可能是中毒了 有可能是系统问题 有可能是硬件问题 也有可能是设置问题 所以我们要一个个的排除 2 第一 中毒可能性 如果电脑可能中毒导致关不了机 就需要下载杀毒软件 然后进行木马杳然 点击全盘杀毒 一个也不能放
  • iOS开发助手、ipa便捷上传工具!

    ipa上传助手Appuploader是一个iOS APP上架辅助助手 帮助开发者可以快速的申请iOS证书打包ipa文件上传到App Store审核 非常方便的iOS上架助手 提升上架效率 ipa上传助手Appuploader官网http w
  • 【C++】类:构造函数、默认构造函数模板

    目录 模板一 两个类名构造函数 一个传参 一个不传参 模板二 成员初始化列表 推荐 性能高 构造函数 默认构造函数的作用 构造函数 传一些参数进来 用于给类的成员变量赋值 默认构造函数 程序员给类的成员变量设定一个默认值 也是用于给类的成员