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日

相关文章

  • Win10重启后系统如何自动还原之前状态?

    Win10重启后系统如何自动还原之前状态? 在Windows 10中,我们可以通过“系统还原”功能来还原计算机到之前的状态,但很多人可能不知道,在Windows 10中还有一种更高级的功能,可以在系统重启后自动还原系统状态,这个功能叫“重置保护”。下面我将详细讲解“重置保护”的设置和使用方法。 开启并配置重置保护 打开“设置”,点击“更新和安全”。 在“更新…

    other 2023年6月27日
    00
  • 批处理中的echo命令图文详解

    当我们在批处理脚本中使用“echo”命令时,它将会在命令行中输出文本。该命令不仅可以用于输出信息,同时也可以用于将文本输出至文件中。这里将会详细讲解“批处理中的echo命令”的使用方法。 一、基本语法 我们可以使用以下的基本语法来使用“echo”命令: echo [文字或变量] 如果需要将文本输出至文件中,我们可以使用以下语法: echo [文字或变量] &…

    other 2023年6月26日
    00
  • Java中的private、protected、public和default的区别(详解)

    Java中的private、protected、public和default的区别(详解) Java是一门有名的面向对象编程语言,在面向对象的编程中,访问控制(non-accessibility)是至关重要的一环。Java提供了四种访问修饰符,使用不同的访问级别控制程序员能否使用类、变量、方法等等。在这篇文章中,我们将详细探讨Java中的四种访问修饰符:pr…

    other 2023年6月26日
    00
  • Mysql my.ini 配置文件详解

    下面我将详细讲解“Mysql my.ini 配置文件详解”的完整攻略,包括以下内容: 一、什么是my.ini配置文件 MySQL 的配置文件是一个具有特定文件名的文本文件,它包含了 MySQL 安装的参数和其他选项。my.ini是 MySQL Windows 版本中的主要配置文件,位于 MySQL 安装的根目录下,它会影响 MySQL 的各种行为。 二、my…

    other 2023年6月25日
    00
  • ajax data属性传值的方式总结

    在前端开发中,我们经常需要使用ajax来向后端发送请求并获取数据。其中,data属性可以用于向后端传递参数。本文将介绍ajax data属性传值的方式总结的完整攻略,包括使用对象传值和使用JSON字符串传值两种方式,并提供两个示例说明。 1. 使用对象传值 使用对象传值需要遵循以下步骤: 创建一个对象,将需要传递的参数作为对象的属性。 var data = …

    other 2023年5月5日
    00
  • 在vue中import()语法不能传入变量的问题及解决

    在Vue中,使用import()语法是进行动态导入的常见方式。但是,有一个问题是import()不能传入变量,只能传入字符串字面量。对于动态的导入路径,这可能会成为一个麻烦。本文将详细讲解该问题的解决方案,以及实现该功能的两种示例。 问题描述 通常,使用import()导入一个模块时,需要使用模块的相对或绝对路径,例如: import("./com…

    other 2023年6月27日
    00
  • 详解Spring系列之@ComponentScan批量注册bean

    详解Spring系列之@ComponentScan批量注册bean 1. 简介 在Spring框架中,使用@ComponentScan注解可以实现批量注册bean。@ComponentScan是一个元注解,用于指示Spring框架扫描指定的包,并自动注册被@ComponentScan注解标记的类为Spring管理的bean。 2. 使用方式 使用@Compo…

    other 2023年6月28日
    00
  • linux用户与文件基础命令介绍(1)

    以下是“Linux用户与文件基础命令介绍(1)”的完整攻略。 简介 Linux用户与文件基础命令介绍(1)是Linux系统入门中的重要部分。学习本章,需要对Linux系统有一定的基础知识和操作经验。本章主要讲解Linux中的用户管理和文件管理。 用户管理 在Linux系统中,为了方便不同用户对系统资源进行管理和访问,系统管理员可以通过用户管理功能创建多个用户…

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