C++中构造函数的参数缺省的详解

yizhihongxing

C++中构造函数的参数缺省的详解

在C++中,我们可以为构造函数设置参数缺省值,使得在实例化对象时可以省略某些参数,也可以在某些场合给构造函数更灵活的设置。

构造函数参数缺省的语法格式

为构造函数设置参数缺省值的语法格式如下:

class 类名{
public:
    类名(参数列表 = 缺省值);
    ...
};

构造函数的参数列表可以设置一个或多个缺省值,缺省值也可以设置在一个或多个参数上。

构造函数的参数缺省的用法

示例 1

下面的代码展示了一个有参数缺省值的构造函数的用法。

#include <iostream>
using namespace std;

// 定义一个person类
class person{
public:
    person(string n = "noname", int a = 0){
        name = n;
        age = a;
    }
    // 声明类的公有方法
    void say(){
        cout << "my name is " << name << ", and I'm " << age << " years old." << endl; 
    }
private:  // 定义类的私有成员
    string name;
    int age;
};

int main(){
    // 使用默认参数构造实例对象
    person p1;
    p1.say();
    // 使用部分参数构造实例对象
    person p2("John");
    p2.say();
    // 构造多个实例
    person p3("Tom", 18);
    p3.say();
    person p4("Alice", 22);
    p4.say();
    return 0;
}

输出结果:

my name is noname, and I'm 0 years old.     // p1使用默认参数构造
my name is John, and I'm 0 years old.        // p2使用第一个参数缺省,从而实例化为John,年龄为0
my name is Tom, and I'm 18 years old.
my name is Alice, and I'm 22 years old.

示例 2

下面的代码展示了多个参数的缺省值的构造函数的用法。

#include <iostream>
using namespace std;

// 定义一个汽车类
class car{
public:
    car(string b = "brand", string c = "color", int p = 0){
        brand = b;
        color = c;
        price = p;
    }
    // 声明类的公有方法
    void info(){
        cout << "brand: " << brand << ", color: " << color << ", price: " << price << " dollars" <<  endl; 
    }
private:  // 定义类的私有成员
    string brand;
    string color;
    int price;
};

int main(){
    // 使用默认参数构造实例对象
    car c1;
    c1.info();
    // 使用部分参数构造实例对象
    car c2("Tesla");
    c2.info();
    // 构造多个实例
    car c3("BMW", "black");
    c3.info();
    car c4("Audi", "red", 20000);
    c4.info();
    return 0;
}

输出结果:

brand: brand, color: color, price: 0 dollars       // c1使用默认参数构造
brand: Tesla, color: color, price: 0 dollars       // c2使用第一个参数缺省,从而实例化为Tesla,颜色为默认值,价格为0
brand: BMW, color: black, price: 0 dollars
brand: Audi, color: red, price: 20000 dollars

总结

使用C++中的构造函数参数缺省值可以使得构造函数在实例化对象时更加灵活和方便,并可以省略某些参数的赋值过程,提高代码的可读性和代码重用性。

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

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

相关文章

  • tree默认选中

    在Web应用程序中,我们经常需要使用树形结构来展示数据。在某些情况下,我们需要在树形结构中默认选中某些节点。以下是一个完整攻略,介绍了如何在树形结构中默认选中节点。 步骤1:树结构 首先,我们创建一个树形结构,该结构包含多个节点。以下是一个示例: <ul id="tree"> <li> <span>No…

    other 2023年5月6日
    00
  • php如何安装扩展

    以下是关于“PHP如何安装扩展”的完整攻略: 步骤1:确定需要安装的扩展 在安装扩展之前,需要确定需要安装的扩展名称。可以在PHP官方网站扩展库中查找需要安装的扩展。 步骤2:下载扩展源 在确定需要安装的扩展后,需要下载扩展代码。可以在PECL官方网站上下载扩展源代码。 步骤3:解压扩展源代码 下载扩展源代码后,需要解压缩扩展代码。使用以下命令解压缩扩展源代…

    other 2023年5月7日
    00
  • Python实现链表反转的方法分析【迭代法与递归法】

    Python实现链表反转的方法分析 链表是一种数据结构,它由一系列节点构成,每个节点包含一个值和指向下一个节点的指针。如果想要对链表进行操作,例如删除、插入或者反转等等,那么就需要了解如何正确地遍历链表。 本文将详细介绍Python实现链表反转的两种方法:迭代法和递归法,内容包括基础原理、代码实现以及示例说明。 基础原理 链表反转是指将链表中元素的前后顺序颠…

    other 2023年6月27日
    00
  • 汇编语言中的函数调用参数传递及全局与局部变量与“基址”

    汇编语言中的函数调用参数传递及全局与局部变量与“基址” 在汇编语言中,函数调用参数传递和全局与局部变量的处理是非常重要的。本攻略将详细讲解这些概念,并提供两个示例来说明。 函数调用参数传递 在汇编语言中,函数调用时参数的传递通常通过栈来实现。以下是一个示例,说明了如何在函数调用中传递参数: section .data msg db \"Hello,…

    other 2023年7月29日
    00
  • 文件夹怎么隐藏

    当我们需要对某些文件夹进行隐藏时,可以通过隐藏文件和文件夹的属性来实现。在Windows系统中,可以通过以下步骤来隐藏文件夹。 步骤1:打开“文件资源管理器” 在Windows系统中,我们可以通过“文件资源管理器”来访问文件夹和文件。在桌面上单击鼠标右键,选择“新建” -> “文本文档” ,然后将其重命名为“隐藏的文件夹”并双击打开,用鼠标右键点击空白…

    其他 2023年4月16日
    00
  • 解析iOS内存不足时的警告以及处理过程

    解析iOS内存不足时的警告以及处理过程 什么是iOS内存不足? iOS应用运行时需要占用一定的内存资源,包括代码、数据、占用的运行内存等。当iOS设备运行的应用程序占用内存超出设备可用内存时,就会出现iOS内存不足的错误提示。这个时候就需要我们针对性的进行处理了。 iOS内存不足的警告 iOS系统在运行时维护了一个内存空间的管理系统,如果检测到应用程序使用的…

    other 2023年6月27日
    00
  • swift字典集合

    Swift字典集合 在Swift中,字典是一种非常常用的数据结构,用于存储键值对。本文将介绍Swift中字典的基本概念、创建和访问字典、字典常用操作等内容,并提供两个示例说明。 1. 字典的基本概念 字典是一种无序的键值对合,其中每个键都是唯一的。在Swift中,字典的类型为Dictionary<Key, Value>,其中Key表示键的类型,V…

    other 2023年5月7日
    00
  • FTP上传文件经常中断或超时的解决方案[完整篇]

    FTP上传文件经常中断或超时的解决方案 在进行FTP上传文件时,经常会出现中断或超时的情况,这可能是由于网络、服务器或客户端等多个方面因素引起的。本文将为您提供一些可能的解决方案。 方案一:调整FTP客户端参数 FTP客户端是进行FTP上传文件的工具,我们可以通过调整FTP客户端的参数来提高上传成功率。 增加FTP客户端上传缓冲区大小。 # 示例:FileZ…

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