zoukankan      html  css  js  c++  java
  • no matching constructor for initialization

    定义新节点出现错误

     1 /*
     2 // Definition for a Node.
     3 class Node {
     4 public:
     5     int val;
     6     Node* next;
     7     Node* random;
     8     
     9     Node(int _val) {
    10         val = _val;
    11         next = NULL;
    12         random = NULL;
    13     }
    14 };
    15 */

    为什么按照如下的方式定义节点会出现错误?

    Node* new_node;
    new_node = new Node;

    报错:no matching constructor for initialization(没有用于初始化的匹配构造函数)

    正确的定义如下:

    Node* new_node;
    new_node = new Node(head_temp -> val);

    解释:

    在类中,有一种函数称为构造函数,这种函数没有函数类型,在定义一个对象时,首先就会执行构造函数。

    上述的类中,构造函数有一个形参,所以定义一个对象时,必须要带形参。

    若类中没有构造函数时,系统会自动生成一个没有形参的空构造函数,这时定义对象就可以不加形参了。

    疑问:一个类中,有多个构造函数,首先会执行哪个构造函数?

    解释:应该是根据构造函数的参数来确定执行构造函数。

  • 相关阅读:
    bzoj1914
    bzoj3144
    bzoj2756
    poj3177
    一些比较水的题目
    bzoj2282
    屯题50AC纪念
    Base64解码中文部分中文乱码的原因
    随机生成36位字符串
    jQuery判断某个元素是否存在某个样式
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/13246164.html
Copyright © 2011-2022 走看看