用有参构造函数作默认构造函数

来源:互联网 发布:免费钢材销售软件 编辑:程序博客网 时间:2024/06/05 03:41

用有参构造函数作默认构造函数

  • 什么是有参构造函数、无参构造函数
  • 怎么用有参构造函数作默认构造函数

阅读之前注意:

本文阅读建议用时:19min
本文阅读结构如下表:

项目 下属项目 测试用例数量 什么是有参构造函数、无参构造函数 无 1 怎么用有参构造函数作默认构造函数 无 1

什么是有参构造函数、无参构造函数

参考以下代码:

#include "iostream"using namespace std;class point{public:    point(int a,int b);//有参构造函数    point();//无参构造函数,会被认为是默认构造函数public:    void print()    {        printf("m_a=%d,m_b=%d\n", m_a, m_b);    }private:    int m_a;    int m_b;};point::point(int a,int b){    m_a = a;    m_b = b;}point::point(){    m_a = 0;    m_b = 0;}void main(){    point p1(10,20);    p1.print();    point p2;    p2.print();    system("pause");}

上例中,无参构造函数会被当成是默认构造函数,即当声明一个类却没有采用显式的构造函数来初始化,比如例子中的p2变量,那么会自动采用默认构造函数来初始化。1.

怎么用有参构造函数作默认构造函数

参考以下代码:

#include "iostream"using namespace std;class coordinate{public:    //err,形参全是默认参数,会被当成是默认构造函数,和无参构造函数冲突    //coordinate(int a = 1, int b = 1);    coordinate(int a, int b);    //无参构造函数是默认构造函数    coordinate();public:    void print()    {        printf("m_a=%d,m_b=%d\n", m_a, m_b);    }private:    int m_a;    int m_b;};coordinate::coordinate(int a,int b){    m_a = a;    m_b = b;}coordinate::coordinate(){    m_a = 0;    m_b = 0;}void main(){    coordinate p1(10, 30);    p1.print();    system("pause");}

如果注释掉这个例子中的无参构造函数,采用全部是默认参数的有参构造函数,那么有参构造函数就会被当成默认构造函数了。注意这两者是冲突的,因为默认构造函数只能存在一个。2.

  • 用有参构造函数作默认构造函数
      • 阅读之前注意
    • 什么是有参构造函数无参构造函数
    • 怎么用有参构造函数作默认构造函数


  1. 测试用例基于王保明先生的讲课内容. ↩
  2. 测试用例基于王保明先生的讲课内容. ↩
原创粉丝点击