• jQuery火箭图标返回顶部代码


        大家都知道当我们声明一个类时,系统会提供一个默认构造函数。当我们需要提供参数进行对类数据成员进行初始化时,就需要对类的带参构造函数进行重载。同时,如果我们需要调用默认构造函数进行类数据成员的初始化时,还需要对类的默认构造函数进行重载。也许就在这一块,我们很多人都遇到过同样的错误:

        当我们给出一个带默认参数的构造函数,并且重载一个默认构造函数,当我们定义一个类对象时,如果不传递参数,会出现二义性错误。因为我们没有传递参数时,系统默认又两种选择,一种是调用默认构造函数,另一种是调用带参构造函数并传递默认参数。

    如下

     1 class Complex  
     2 {  
     3 private:  
     4     float real, imag;  
     5 public:  
     6     Complex()  
     7     {  
     8         real = 0;  
     9         imag = 0;  
    10     }  
    11       
    12     Complex(float r = 0, float i = 0)  
    13     {  
    14         real = r;  
    15         imag = i;  
    16     }  
    17 };  
    18 int main()  
    19 {  
    20         Complex c;//error: call of overloaded ‘Complex()’ is ambiguous  
    21   
    22         return 0;  
    23 }  

    在编译的时候出现错误:

    1 <span style="color:#FF0000;">error: call of overloaded ‘Complex()’ is ambiguous</span>  

    对此,有一下两种解决方法

    1.去掉默认构造函数。

     1 class Complex  
     2 {  
     3 private:  
     4     float real, imag;  
     5 public:  
     6     Complex(float r = 0, float i = 0)  
     7     {  
     8         real = r;  
     9         imag = i;  
    10     }  
    11 }; 

    这时,当我们不给构造函数传递参数时,系统会传递默认参数以对类数据成员进行初始化。

    Complex c;

    相当于

    Complex c(0,0);

    2.去掉带参构造函数的默认参数

     1 class Complex  
     2 {  
     3 private:  
     4     float real, imag;  
     5 public:  
     6     Complex()  
     7     {  
     8         real = 0;  
     9         imag = 0;  
    10     }  
    11       
    12     Complex(float r, float i)  
    13     {  
    14         real = r;  
    15         imag = i;  
    16     }  
    17 };  

    Complexc;

    相当于

    Complex c();

  • 相关阅读:
    【数据库】数据表解锁
    【数据库】Oracle数据备份恢复
    【数据库】mysql没有密码无法登录的解决办法
    【设计模式】设计模式(一)-- 大话设计模式读书笔记
    【Linux】Linux常用命令及操作 (一)
    【GIT】git详解
    【python】Anaconda4 linux/windos安装
    【心 得】关于此博客
    eclipse中的.project 和 .classpath文件的具体作用
    Oracle忘记密码处理
  • 原文地址:https://www.cnblogs.com/Trojan00/p/9022567.html
Copyright © 2020-2023  润新知