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

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日

相关文章

  • C语言中的函数指针基础学习教程

    以下是针对“C语言中的函数指针基础学习教程”的完整攻略,包括什么是函数指针、如何定义和使用函数指针,以及实际应用示例。 函数指针是什么 函数指针是指向函数的指针,即指向函数在内存中的地址。 如何定义函数指针 函数指针的定义方式类似于函数的声明,如下所示: 返回值类型 (*指针变量名)(形参列表); 其中指针变量名是函数指针的名称,指针变量名前的*表示这是一个…

    other 2023年6月27日
    00
  • 关于linux:解释exportlang lc_ctype lc_all的效果

    关于Linux:解释export LANG、export LC_CTYPE、export LC_ALL的效果 在Linux中,export命令用于设置环境变量。其中,export LANG、export LC_CTYPE和export LC_ALL是三个常用的环境变量设置命令。下面我们将详细讲解export LANG、export LC_CTYPE和expo…

    other 2023年5月7日
    00
  • 如何通过apt-get获得安装包的源码

    如何通过apt-get获得安装包的源码 在Linux系统中,使用APT (Advanced Package Tool)来安装软件包是常见的做法。通常我们只需要使用apt-get命令即可快速安装需要的软件包。然而在某些情况下,我们需要获取软件包的源码来自行编译或者进行其他自定义操作。下面将介绍如何通过apt-get命令获得安装包的源码。 步骤 首先,我们需要添…

    其他 2023年3月28日
    00
  • 路由器常见的默认IP地址清单汇总篇

    路由器常见的默认IP地址清单汇总篇攻略 路由器是连接计算机网络的设备,它使用IP地址来进行通信和管理。默认情况下,路由器会分配一个默认的IP地址,以便用户可以通过该地址访问路由器的管理界面。本文将详细介绍一些常见的默认IP地址,并提供两个示例说明。 1. 常见的默认IP地址 以下是一些常见的默认IP地址: 192.168.0.1 192.168.1.1 19…

    other 2023年7月30日
    00
  • app判断链接参数后缀跳转不同地址的方法

    当我们需要根据链接参数后缀来跳转到不同的地址时,可以使用以下方法: 首先,我们需要获取链接中的参数后缀。可以使用编程语言中的字符串处理函数或正则表达式来提取参数后缀。例如,在JavaScript中,可以使用window.location.search来获取链接中的查询字符串,然后使用字符串处理函数或正则表达式提取参数后缀。 接下来,我们可以使用条件语句(如i…

    other 2023年8月5日
    00
  • kalilinux中无法定位软件包

    在Kali Linux中,当您尝试安装软件包时,可能会出现“无法定位软件包”的错误。这通常是由于软件源配置不正确或软件包名称拼写错误致的。在本攻略中,我们将详细讲解如何解决此问题,并提供两个示例说明。 更新软件源 在Kali Linux中,软件包是从软件源中获取的。如果软件源配置不正确,则可能会导致“无法定位软件包”的。要解决此问题,您可以尝试更新软件源并重…

    other 2023年5月9日
    00
  • C语言switch 语句的用法详解

    C语言switch语句的用法详解 什么是switch语句? switch语句是一种用于对变量或表达式进行多路分支的语句,它会根据指定的表达式的值来执行相应的语句代码块。 switch语句通常被用于与if语句类似的场合,但是switch语句通常更加简洁明了。其基本格式如下: switch(expression) { case constant1: /* sta…

    other 2023年6月27日
    00
  • 守望先锋归来进不去游戏怎么办 闪退、死机重启解决方法

    当玩家尝试进入“守望先锋”时,有时候会遇到游戏开启不了、闪退、死机、重启等问题。这些问题通常是因为游戏客户端、电脑系统或外部因素导致的。为帮助玩家解决这些问题,本文将详细讲解“守望先锋归来进不去游戏怎么办 闪退、死机重启解决方法”。 问题一:游戏闪退或死机 如果你的游戏闪退或死机,以下措施可以尝试解决问题: 1. 检查电脑硬件配置 “守望先锋”是一款占用比较…

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