C++类中对构造函数的重载

C++类中对构造函数的重载

C++ 允许在同一作用域中的某个函数运算符 指定多个定义,分别称为函数重载运算符重载

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。

与函数一样,构造函数也可重载,因此可创建一个将姓名作为参数的构造函数,如下所示:

cpp 复制代码
class Human
{
public:
    Human()
    {
        // default constructor code here
    }
    Human(string humansName)
    {
        // overloaded constructor code here
    }
};

C++ 中,我们可以在同名的类中拥有多个构造函数,只要每个构造函数具有不同的参数列表即可。这个概念称为构造函数重载,与函数重载非常相似。

重载的构造函数本质上具有相同的名称(类的确切名称),但参数的数量和类型不同。

根据传递的参数的数量和类型调用构造函数。

在创建对象时,必须传递参数以让编译器知道需要调用哪个构造函数。

以下示例程序演示了重载构造函数的用途,它在创建 Human 对象时提供了姓名:

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

class Human
{
    private:
    string name;
    int age;

    public:
    Human() // default constructor 
    {
        age = 0; // initialized to ensure no junk value
        cout << "Default constructor: name and age not set" << endl;
    }

    Human(string humansName, int humansAge) // overloaded constructor 
    {
        name = humansName;
        age = humansAge;
        cout << "Overloaded constructor creates ";
        cout << name << " of " << age << " years" << endl;
    }
};

int main()
{
    Human firstMan; // use default constructor
    Human firstWoman ("Eve", 20); // use overloaded constructor
}

输出:

复制代码
Default constructor: name and age not set
Overloaded constructor creates Eve of 20 years

分析:

第 26~30 行的 main()很简单,它创建了两个 Human 对象,其中 firstMan 是使用默认构造函数创建的,而 firstWoman 是使用指定姓名和年龄的重载构造函数创建的。所有的输出都是因创建对象而生成的!如果 Human 类没有默认构造函数,则在 main()中创建每个 Human 对象时都只能使用将姓名和年龄作为参数的构造函数;在这种情况下,不提供姓名和年龄就无法创建 Human 对象。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,

分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容

点击立即学习:C/C++后台高级服务器课程

相关推荐
zh_xuan4 小时前
c++ 单例模式
开发语言·c++·单例模式
利刃大大7 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
喜欢吃燃面7 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked937 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
虚拟之8 小时前
36、stringstream
c++
我很好我还能学8 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
南岩亦凛汀9 小时前
在Linux下使用wxWidgets进行跨平台GUI开发
c++·跨平台·gui·开源框架·工程实战教程
曦月逸霜9 小时前
第34次CCF-CSP认证真题解析(目标300分做法)
数据结构·c++·算法
galaxy_strive10 小时前
绘制饼图详细过程
开发语言·c++·qt
Unpredictable22211 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉