C++中转换构造函数与默认函数的优先级

简介: C++中转换构造函数与默认函数的优先级

前言:

在学习谭浩强《c++面对对象设计》一书中,在学到转换构造函数中,

在转换构造函数中

#include<iostream>
using namespace std;
class plural 
{
  public:
    plural(int a=0,int b=0):real(a),imaginary(b){}; //默认构造函数
    plural(double a){real = a;imaginary = 3;};  //转换构造函数
    void display(); 
  private:
    double real;
    double imaginary;
};

他们都是构造函数,书上说到在plural类的作用域中有以下定义:

plural p1(3) //建立对象p1,由于只有一个参数,调用转换构造函数

那假如我在类中定义了默认构造函数呢,系统如何选择用哪一个函数呢?

  • 结果

在经过反复调式,测验,并结合其他网上文章,得出一下总结

系统是不会运行你函数出现歧义性的,如果你在类中定义了一下:

 plural(int a=0,int b=0):real(a),imaginary(b){};
 plural(int a){real = a;imaginary = 3;};   

系统会提示call of overloaded plural(int) is ambiguous 出现歧义性,

在没有歧义性下函数优先级是看(参数数据类型是否与实参对应)


相关文章
|
23小时前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)
|
1天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-2
c++初阶------类和对象(六大默认构造函数的揭破)
|
1天前
|
存储 编译器 C语言
c++初阶------类和对象(六大默认构造函数的揭破)-1
c++初阶------类和对象(六大默认构造函数的揭破)
|
1天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)
|
2天前
|
编译器 C++
【C++类和对象】构造函数与析构函数
【C++类和对象】构造函数与析构函数
【C++类和对象】构造函数与析构函数
|
3天前
|
编译器 C++
【C++进阶】引用 & 函数提高
【C++进阶】引用 & 函数提高
|
7天前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
7天前
|
存储 C++
C++从入门到精通:2.1.1函数和类
C++从入门到精通:2.1.1函数和类
|
9天前
|
数据安全/隐私保护 C++
C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
C++中的构造函数是特殊成员函数,用于对象初始化。类型包括默认构造函数(无参数)、带参数构造函数、拷贝构造函数和移动构造函数。默认构造函数设置对象默认状态,带参数构造函数允许传递初始化值。拷贝构造函数复制已有对象,移动构造函数高效转移资源。构造函数的访问权限可控制为public、private或protected。理解构造函数有助于编写健壮的C++代码。关注公众号`Let us Coding`获取更多内容。
23 0
|
15天前
|
机器学习/深度学习 定位技术 C++
c++中常用库函数
c++中常用库函数
38 0