C++中构造函数重载

C++中构造函数重载

在C++程序中,构造函数相当于一个类的初始化操作,用于初始化对象的数据成员。当一个类中有多个构造函数时,我们称为“构造函数重载”。

通过构造函数重载,我们可以为对象提供不同的初始化方式,以满足不同的需求。

构造函数重载的定义

构造函数重载的定义与函数重载类似,它可以拥有多个构造函数,只要它们的参数列表不同即可。

class MyClass {
    public:
        MyClass() {
            // 默认构造函数
        }
        MyClass(int num) {
            // 带参数构造函数
        }
        MyClass(double num1, double num2) {
            // 带参数构造函数
        }
};

构造函数重载的调用

构造函数的调用是在创建对象时自动执行的,我们只需要提供相应的参数即可。

MyClass obj1;                         // 调用默认构造函数
MyClass obj2(10);                     // 调用带一个整型参数的构造函数
MyClass obj3(1.2, 3.4);               // 调用带两个双精度型参数的构造函数

构造函数重载的注意事项

  1. 构造函数的调用是在创建对象时自动执行的,我们无法手动调用构造函数。
  2. 默认构造函数不需要参数,其余的构造函数需要参数。
  3. 构造函数的参数列表不能完全相同,否则会产生二义性错误。

构造函数重载的示例

以下示例展示了如何在一个类中重载构造函数,以创建不同类型的对象。

#include <iostream>

class Player {
    private:
        std::string name;    // 姓名
        int age;             // 年龄
        int score;           // 分数
    public:
        // 构造函数重载
        Player() {
            name = "无名";
            age = 0;
            score = 0;
        }
        Player(std::string n) {
            name = n;
            age = 0;
            score = 0;
        }
        Player(std::string n, int a) {
            name = n;
            age = a;
            score = 0;
        }
        Player(std::string n, int a, int s) {
            name = n;
            age = a;
            score = s;
        }
        // 成员函数
        void showInfo() {
            std::cout << "姓名:" << name << std::endl;
            std::cout << "年龄:" << age << std::endl;
            std::cout << "分数:" << score << std::endl;
            std::cout << std::endl;
        }
};

int main() {
    Player player1;
    player1.showInfo();             // 输出:姓名:无名 年龄:0 分数:0

    Player player2("小明");
    player2.showInfo();             // 输出:姓名:小明 年龄:0 分数:0

    Player player3("小花", 18);
    player3.showInfo();             // 输出:姓名:小花 年龄:18 分数:0

    Player player4("小红", 20, 90);
    player4.showInfo();             // 输出:姓名:小红 年龄:20 分数:90

    return 0;
}

以上示例中,我们通过重载构造函数,为Player类提供了四种不同的初始化方式,并且可以输出不同的信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中构造函数重载 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • Android网络编程之UDP通信模型实例

    下面给你详细讲解“Android网络编程之UDP通信模型实例”的完整攻略。 1. 简介 在移动互联网时代,网络通讯已经成为现代通信的关键。在移动端的应用开发中,UDP通信模型是一种非常常用的网络通信模型。本教程将重点介绍如何使用 Android 进行 UDP 通信模型的开发,并提供实例和代码供大家参考学习。 2. UDP概述 UDP(User Datagra…

    other 2023年6月27日
    00
  • 找回MySQL管理员root密码的3个妙招

    为了找回MySQL管理员root密码,有以下3个妙招可供选择: 妙招一:使用配置文件重置密码 停止MySQL服务: sudo systemctl stop mysqld 创建一个文件 mysqld.cnf,并添加以下内容: [mysql] user=root pid-file=/var/run/mysqld/mysqld.pid skip-grant-tab…

    other 2023年6月27日
    00
  • Vue Transition实现类原生组件跳转过渡动画的示例

    Vue Transition实现类原生组件跳转过渡动画的示例攻略 1. 准备工作 首先,你需要在你的Vue项目中安装Vue-Router插件,用于实现路由功能。你可以使用以下命令进行安装: npm install vue-router 2. 添加路由配置 在你的Vue项目中的main.js文件中,引入Vue和Vue-Router,并且创建路由实例。在路由实例…

    other 2023年6月28日
    00
  • dns优选有什么用?win7系统360dns优选功能作用

    以下是关于“Matlab-Octave/Matlab中的deal()函数有什么意义?”的完整攻略,包括基本概念、用法、示例和注意事项。 基本概念 deal()函数是Matlab-Octave/Matlab中的一个内置函数,用于将输入参数分配给输出变量。它可以将多个输入参数分配给多个输出变量,也可以将一个输入参数分配给多个输出变量。 用法 deal()函数的基…

    other 2023年5月7日
    00
  • tcp发送窗口更新tcp_ack_update_window

    TCP发送窗口更新tcp_ack_update_window TCP是一种面向连接的协议,用于在网络上可靠地传输数据。在TCP连接中,发送方和接收方之间会进行数据传输确认。为了提高传输效率,TCP使用了发送窗口和接收窗口的机制。本文将提供一个完整的攻略,介绍TCP发送窗口更新tcp_ack_update_window的基础知识,并提供两个示例说明。 TCP发…

    other 2023年5月8日
    00
  • osgearth介绍

    osgEarth 介绍 osgEarth是一个开源的地理空间引擎,它使用OpenSceneGraph的各种功能来创建三维地球和地理空间数据的视觉化。osgEarth支持使用各种格式的数据(包括地形高度、矢量地图、遥感影像和OBS代码),可以从不同的数据源中获取数据,并可以快速可视化地展示它们。 osgEarth的设计哲学是通过建立多层次的渲染管道,使地球和地…

    其他 2023年3月29日
    00
  • php自动加载规范psr4(thinkphp)

    PHP自动加载规范PSR-4(ThinkPHP) 1. 概述 PHP自动加载规范PSR-4是PHP FIG(PHP Framework Interop Group)制定的一种规范,用于规范PHP类的自动加载。该规范定义了一种标准的命名空间和类名映射到文件路径的规则,使得PHP类的自动加载更加方便和高效。 ThinkPHP是一款流行的PHP框架,支持PSR-4…

    other 2023年5月9日
    00
  • PyTorch如何修改为自定义节点

    PyTorch是一个非常流行的深度学习框架,支持自定义节点的修改。下面详细讲解一下如何修改PyTorch为自定义节点的完整攻略。 1.继承torch.autograd.Function 如果想要自定义节点,我们需要继承torch.autograd.Function,并实现forward和backward函数。以下是一个自定义Sigmoid节点的示例,被称为M…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部