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日

相关文章

  • pandasinfo函数

    pandas.info()函数是pandas库中的一个函数,用于显示DataFrame对象的基本信息,包括每列的名称、非空值的数量、数据类型和内存使用情况等。以下是使用pandas.info()函数的完整攻略: 步骤1:导入pandas库 在使用pandas.info()函数之前,需要先导入pandas库。可以使用以下代码导入pandas库: import …

    other 2023年5月7日
    00
  • photoshop+xara3d打造独特3d文字效果

    以下是关于“Photoshop+Xara3D打造独特3D文字效果”的完整攻略,包括基本概念、步骤和两个示例说明。 基本概念 Photoshop是一款图像软件,可以用来编辑和处理图像。Xara3D是一款3D文字制作软件,可以用来制作独特的3D效果。 步骤 以下是使用Photoshop和Xara3D制作独特3D文字效果的步骤: 打开Photoshop,创建一个新…

    other 2023年5月7日
    00
  • uaf漏洞学习

    以下是UAF(Use-After-Free)漏洞学习的完整攻略: 步骤1:了解UAF漏洞 在学习UAF漏洞之前,需要了解UAF漏洞的基本概念和原理。UAF洞通常发生在程序释放了一个对象的内存空间后,但仍然继续使用该内存空间。攻击者可以利用UAF漏洞来执行任意代码或者导致程序崩溃。UAF漏洞的修复通常需要程序员正确地管理内存空间,避免重复释放或者使用已经释放的…

    other 2023年5月6日
    00
  • nginx+php-fpm配置文件的组织结构介绍

    下面是 “nginx+php-fpm配置文件的组织结构介绍” 的完整攻略: 1. 简介 Nginx和PHP-FPM是流行的Web应用程序服务器和处理器,许多Web应用程序都使用它们作为服务端的基础架构。在配置nginx和php-fpm环境时,正确的配置文件结构是非常重要的,它会影响你网站的性能和稳定性。 本文将介绍nginx和php-fpm的配置文件的组织结…

    other 2023年6月25日
    00
  • 如何重置CentOS 7的Root密码?设置CentOS 7的Root密码的方法与步骤

    下面是详细的攻略: 如何重置CentOS 7的Root密码? 当您忘记了 CentOS 7 的 Root 密码时,您可以采取一些措施进行重置。下面是重置 CentOS 7 Root 密码的方法和步骤。 方法一:通过忘记密码流程重置 在登录页面点击“忘记密码”链接 如果您的 CentOS 7 系统上有“忘记密码”选项,则您可以轻松找回密码。单击登录页面上的“忘…

    other 2023年6月27日
    00
  • java类中serialVersionUID的作用及其使用

    Java类中serialVersionUID的作用及其使用攻略 什么是serialVersionUID? serialVersionUID是Java序列化中的一个重要概念,是java.io.Serializable接口默认的序列化版本标识符,用来表示类的版本信息。每个可序列化的Java类都有一个serialVersionUID值,用来校验序列化对象的版本信息…

    other 2023年6月27日
    00
  • MYSQL中varchar和TEXT的相关问题详析

    MYSQL中varchar和TEXT的相关问题详析 一、varchar和TEXT的区别 1. varchar varchar是MySQL中一种定义数据类型的关键字,用于指定一个可变长度的字符串,其长度不超过指定的最大长度。varchar类型的数据占用的存储空间与其中存放的实际数据长度有关。 CREATE TABLE student( s_id INT PRI…

    other 2023年6月25日
    00
  • Phpstudy2018 集成环境配置虚拟域名访问到Index Of 下

    Phpstudy2018 集成环境配置虚拟域名访问到Index Of 下 介绍 PHPStudy是一个Windows环境下的PHP开发环境。它包含了最新的PHP和MySQL,可以满足开发者的需求。在这篇文章中,我们将介绍如何使用PHPStudy2018配置虚拟域名,以便在本地环境下访问到Index Of。 配置虚拟域名 找到PHPStudy2018的安装目录…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部