浅谈C++中的构造函数分类及调用规则

 更新时间:2016年03月13日 17:35:31   作者:YoferZhang  
这篇文章主要介绍了C++中的构造函数分类及调用规则,文中根据参数写出了几种不同类型的构造函数并解释了如何调用,需要的朋友可以参考下

构造函数的分类
这里简单地将C++中的构造函数分一下类,直接看下面的代码表达,说明在注释中:

#include <iostream> 
using namespace std; 
 
class Text 
{ 
public: 
  Text() // 无参数构造函数 
  { 
    m_a = 0; 
    m_b = 0; 
    cout << "无参数构造函数" << endl; 
  } 
 
  Text(int a) // 有参数构造函数 
  { 
    m_a = a; 
    m_b = 0; 
    cout << "无参数构造函数" << endl; 
  } 
 
  Text(int a, int b) // 有参数构造函数,有三种调用方法 
  { 
    m_a = a; 
    m_b = b; 
    cout << "有参数构造函数" << endl; 
  } 
 
  // 赋值构造函数,也叫copy构造函数 
  Text(const Text& obj) 
  { 
    cout << "这也是构造函数" << endl; 
  } 
 
  ~Text(); 
 
private: 
  int m_a; 
  int m_b; 
}; 
 
 
 
int main() 
{ 
  // 1括号法 
  Text t1; // 调用无参数构造函数 
 
  // 2等号法 
  Text t2 = (3, 4, 5, 6, 7); 
  // C++对等号进行了加强,c++编译器自动的调用构造函数 
 
  // 3直接调用构造函数,手动调用构造函数 
  Text t3 = Text(1, 2); // 这里涉及到匿名对象 
  return 0; 
} 

构造函数调用规则研究
1)当类中没有定义任何一个构造函数时,c++编译器会提供默认无参构造函数和默认拷贝构造函数
2)当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数
这里一定注意,当你只定义一个拷贝构造函数,在创建对象时是不能直接调用无参数构造函数的。
3) 当类中定义了任意的非拷贝构造函数(即:当类中提供了有参构造函数或无参构造函数),c++编译器不会提供默认无参构造函数
当类中定义了一个多参数的构造函数,那么也是不存在无参数构造函数
4 )默认拷贝构造函数成员变量简单赋值
总结:只要你写了构造函数,那么你必须用。
也再次印证了拷贝构造函数也是构造函数,一定要注意这个易错点。

相关文章

  • C++函数指针与指针函数有哪些关系和区别

    C++函数指针与指针函数有哪些关系和区别

    函数指针是一个指针变量,它可以存储函数的地址,然后使用函数指针,这篇文章主要介绍了C++中函数指针与指针函数有哪些关系和区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2022-08-08
  • C++实现list增删查改模拟的示例代码

    C++实现list增删查改模拟的示例代码

    本文主要介绍了C++实现list增删查改模拟,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • C++深入探究list的模拟实现

    C++深入探究list的模拟实现

    list相较于vector来说会显得复杂,它的好处是在任意位置插入,删除都是一个O(1)的时间复杂度,本文主要介绍了C++中List的模拟实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C++ LeetCode0547题解省份数量图的连通分量

    C++ LeetCode0547题解省份数量图的连通分量

    这篇文章主要为大家介绍了C++ LeetCode0547题解省份数量图的连通分量示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • C++中map 字典的基本使用教程

    C++中map 字典的基本使用教程

    Map是字典一样的数据结构,它是(键,值)对的关联数组,其中每个唯一键仅与单个值相关联,下面这篇文章主要给大家介绍了关于C++中map 字典的基本使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • C++中的自增与自减

    C++中的自增与自减

    这篇文章主要介绍了C++中的自增与自减,自增与自减是C++当中两个使用频率非常高的运算符,不仅在循环当中用到,在日常的代码当中也经常使用,下面来看看文章得具体介绍
    2021-11-11
  • C语言栈之顺序栈

    C语言栈之顺序栈

    这篇文章主要为大家详细介绍了C语言的顺序栈,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 基于C++浮点数(float、double)类型数据比较与转换的详解

    基于C++浮点数(float、double)类型数据比较与转换的详解

    本篇文章是对C++中浮点数(float、double)类型数据比较与转换进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++常量详解一(常量指针与常量引用的初始化)

    C++常量详解一(常量指针与常量引用的初始化)

    这篇文章主要介绍了C++常量详解一(常量指针与常量引用的初始化),需要的朋友可以参考下
    2017-06-06
  • Qt实现字幕滚动效果的示例代码

    Qt实现字幕滚动效果的示例代码

    这篇文章主要介绍了Qt如何利用QTimer实现字幕滚动功能,并且可以实现自行更改文本内容、自适应文本大小、自由调整速度等功能,感兴趣的可以学习一下
    2022-06-06

最新评论