C++:构造函数的重载

简介:

构造函数的重载的判断条件是:参数的个数或者类型不同,其他要保持一样

举例说明:

方式一:在类中声明重载构造函数,在类外定义

复制代码
//第一种方法: 
#include<iostream>
using namespace std;
class Date{
 public:
        Date();        //声明一个无参数的构造函数 
        Date(int y,int m,int d);//声明一个带有三个参数的构造函数 
        void showDate();
 private:
        int year;
        int month;
        int day;       
}; 
Date::Date()        //定义一个无参数的构造函数,进行初始化 
{
       year = 2000;
       month = 4;
       day = 28;
}
Date::Date(int y,int m,int d)//定义一个带有三个参数的构造函数,进行初始化 
{
       year = y;
       month = m;
       day = d;
}
inline void Date::showDate()    //定义一个显示内联函数 
{
   cout<<year<<","<<month<<","<<day<<endl;
} 
int  main()
{
  Date date1; //定义Date的对象date1,并调用无参数的构造函数 
  cout<<"Date1 output:"<<endl;
  date1.showDate(); //调用showDate()方法,显示date1的数据 
  Date date2(2015,4,18);//定义Date的对象date2,并调用有三个参数的构造函数 
  cout<<"Date2 output:"<<endl;
  date2.showDate();//调用showDate()方法,显示date2的数据
  return 0;
}
复制代码

方式二:直接在类中定义重载构造函数

复制代码
//第二种方法:
#include<iostream>
using namespace std;
class Date{
 public:
        Date()        //声明并定义一个无参数的构造函数
        {
          year = 2000;
          month = 4;
          day = 28;
        } 
        Date(int y,int m,int d)//声明并定义一个带有三个参数的构造函数
        {
          year = y;
          month = m;
          day = d;
        } 
        void showDate()  //声明并定义一个showDate的普通成员函数 
        {
          cout<<year<<","<<month<<","<<day<<endl;
        }
 private:
        int year;
        int month;
        int day;       
}; 
int  main()
{
  Date date1; //定义Date的对象date1,并调用无参数的构造函数 
  cout<<"Date1 output:"<<endl;
  date1.showDate(); //调用showDate()方法,显示date1的数据 
  Date date2(2015,4,18);//定义Date的对象date2,并调用有三个参数的构造函数 
  cout<<"Date2 output:"<<endl;
  date2.showDate();//调用showDate()方法,显示date2的数据
  return 0;
} 
//注意:使用无参构造函数创建对象时,应该用语句"Date date1",而不能用语句"Date date1()"
//     因为语句"Date date1()":表明一个名为date1的普通函数,此函数的返回值为Date类型 
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4912109.html ,如需转载请自行联系原作者
相关文章
|
26天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
67 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
70 4
|
3月前
|
编译器 C++
C++ 类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。
77 30
|
2月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
24 1
|
2月前
|
C++
C++构造函数初始化类对象
C++构造函数初始化类对象
22 0
|
2月前
|
C++
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
C++入门4——类与对象3-2(构造函数的类型转换和友元详解)
26 0
|
3月前
|
C++
C++(十九)new/delete 重载
本文介绍了C++中`operator new/delete`重载的使用方法,并通过示例代码展示了如何自定义内存分配与释放的行为。重载`new`和`delete`可以实现内存的精细控制,而`new[]`和`delete[]`则用于处理数组的内存管理。不当使用可能导致内存泄漏或错误释放。
|
4月前
|
编译器 C++
C++的基类和派生类构造函数
基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。 在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化。 这种矛盾在C++继承中是普遍存在的,解决这个问题的思路是:在派生类的构造函数中调用基类的构造函数。 下面的例子展示了如何在派生类的构造函数中调用基类的构造函数:
|
5月前
|
NoSQL 编译器 Redis
c++开发redis module问题之如果Redis加载了多个C++编写的模块,并且它们都重载了operator new,会有什么影响
c++开发redis module问题之如果Redis加载了多个C++编写的模块,并且它们都重载了operator new,会有什么影响
|
5月前
|
存储 C++
【C++】string类的使用③(非成员函数重载Non-member function overloads)
这篇文章探讨了C++中`std::string`的`replace`和`swap`函数以及非成员函数重载。`replace`提供了多种方式替换字符串中的部分内容,包括使用字符串、子串、字符、字符数组和填充字符。`swap`函数用于交换两个`string`对象的内容,成员函数版本效率更高。非成员函数重载包括`operator+`实现字符串连接,关系运算符(如`==`, `&lt;`等)用于比较字符串,以及`swap`非成员函数。此外,还介绍了`getline`函数,用于按指定分隔符从输入流中读取字符串。文章强调了非成员函数在特定情况下的作用,并给出了多个示例代码。