开发者

C++之构造函数默认值设置方式

目录
  • C++构造函数默认值设置
    • 构造函数默认值
  • C++构造函数默认参数使用
    • 总结

      C++构造函数默认值设置

      构造函数默认值

      C++类中构造函数设置默认值应当注意:

      • C++类构造函数只能对排在最后的参数提供默认值;
      • 既可以在构造函数的声明中,也可以在构造函数的实现中,提供缺省值,但,不能在两者同时提供缺省默认值。

      代码:

      #include <IOStream>
      using namespace std;
      class CTest
      {
      public:  
        CTest();
        CTest(int _a, double _b, const bool _c = false, bool _d = true);
      private:
        const bool c;
        bool d;
        int a;
        double b;
      };
      CTest::CTest(int _a, double _b = 1.0, const bool _c, bool _d):a(_a), b(_b), c(_c), d(_d)
      {
        cout << a << endl;
        cout << b << endlpython;
        cout << c << endl;
        cout << d << enjsdl; 
      }
      int main()
      javascript{
        // CTest* test = new CTest(1, 1.0, true, false);
        // CTest* test = new CTest(1, 1.0, true);
        //CTest* test = new CTest(1, 1.0);
        CTest* test = new CTest(1);
        return 0;
      }

      C++构造函数默认参数使用

      一 代码

      #include <iostream>
      using namespace std;
      class Box{
      pFOOjlWFFCiublic:
          Box(int h=2,int w=2,int l=2);//在声明构造函数时指定默认参数
          int volume();
      private:
          int height,width,length;
      };
      Box::Box(int h,int w,int len){//在定义函数时可以不指定默认参数
          height=h;
          width=w;
          length=len;
      }
      int Box::volume(){
          return height*width*length;
      }
      int main(){
          Box box1(1);//不指定第2、3个实参
          cout<<"box1's volume: "<<box1.volume()<<endl;
          Box box2(1,3);// 不指定第3个实参
          cout<<"box2's volume: "<<box2.volume()<<endl;
          Box box3;
          cout<<"box3's volume:"<<box3.volume()<<endl;
          return 0;
      }

      二 运行

      [root@localhost charpter02]# ./0210
      box1's volume: 4
      box2's volume: 6
      box3's volume:8

      三 说明

      该实战中,定义了一个带默认参数的构造函数,是在声明时指定默认参数,而定义时则可以不指定默认参数。定义对象时,可以传0~3个参数,传了几个参数,就替换前面的几个参数,其余都使用默认参数。

      使用默认参数的好处在于:调用构造函数时就算没有提供参数也不会出错,且对每一个对象能有相同的初始化状态。

      不过,应该在声明构造函数默认值时指定默认参数值,编程客栈而不能只在定义构造函数时指定默认参数值。如果构造函数中的参数全指定了默认值,则在定义对象时,可给一个实参或多个实参,也可不给实参。

      一个类中如果定义了全是默认参数的构造函数后,就不能再定义重载构造函数了。

      假设Box类中定义了3个构造函数

      Box(int =10,int=3,int=5);
      Box();
      Box(int,int);

      若有以下定义语句,则会出现问题

      Box box1;              //是应该调用第1个构造函数还是应该调用第2个构造函数
      Box box2(13,18);        //是应该调用第2个构造函数还是应该调用第3个构造函数

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜