zoukankan      html  css  js  c++  java
  • C++ 构造函数

    【1】构造函数的命名方式

      构造函数的名字必须与类名同名,而不能由用户任意命
      名,以便编译系统能识别它并把它作为构造函数处
      理。
    【2】有关构造函数的使用,有以下说明:
      (1) 在类对象进入其作用域时调用构造函数。
      (2) 构造函数没有返回值,因此也不需要在定义构
            造函数时声明类型,这是它和一般函数的一个重要
            的不同之点。
      (3) 构造函数不需用户调用,也不能被用户调用。
      (4) 在构造函数的函数体中不仅可以对数据成员赋
           初值,而且可以包含其他语句。但是一般不提倡在
           构造函数中加入与初始化无关的内容,以保持程序
           的清晰。
      (5) 如果用户自己没有定义构造函数,则C++
           会自动生成一个构造函数,只是这个构造函数的函
           数体是空的,也没有参数,不执行初始化操作。
    【3】(1) 带参数的构造函数中的形参,其对应的实参
        在定义对象时给定。
        (2) 用这种方法可以方便地实现对不同的对象进
        行不同的初始化。

    #include<iostream>
    using namespace std;
    
    class Box
    {
            public:
                    Box(int ,int ,int );
                    int volume();
            private:
                    int height;
                    int width;
                    int 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(12,25,50);
            cout<<"The volume of box is"<<box1.volume()<<endl;
            Box box2(13,43,23);
            cout<<"The volume of box is"<<box2.volume()<<endl;
            return 0;
    }
    View Code

    【4】 用参数初始化表对数据成员初始化C++还提供另一种
              初始化数据成员的方法————参数初始化表来实现对
       数据成员的初始化。这种方法不在函数体内对数据成员初始化,而是在函数首部实现。例如例
         定义构造函数可以改用以下形式:
       Box Box(int h,int w,int len):height(h) width(w) length(len){ }
       这种写法方便、简练,尤其当需要初始化的数据成
       员较多时更显其优越性。甚至可以直接在类体中(而不是在类外)定义构造函数

    【5】构造函数的重载
           在一个类中可以定义多个构造函数,以便对类对象
        提供不同的初始化的方法,供用户选用。这些构造
        函数具有相同的名字,而参数的个数或参数的类型
        不相同。这称为构造函数的重载。
        

    #include<iostream>
    using namespace std;
    
    class Box
    {
            public:
                    Box();//声明一个无参数的构造函数
                    Box(int h,int w,int len):height(h),width(w),length(len){}//声明一个有参数的构造函数
                    int volume();
            private:
                    int height;
                    int width;
                    int length;
    };
    
    Box::Box()
    {
            height = 10;
            width = 10;
            length = 10;
    
    }
    
    int Box::volume()
    {
            return (height*width*length);
    }
    
    int main()
    {
            Box box1;
            cout<<"The volume of box1 is"<<box1.volume()<<endl;
            Box box2(15,30,25);
            cout<<"The volume of box2 is"<<box2.volume()<<endl;
            return 0;
    
            return 0;
    }
    View Code

    (1) 调用构造函数时不必给出实参的构造函数,称
      为默认构造函数(default constructor)
      显然,无参的构造函数属于默认构造函数。一个类只能有一个
      默认构造函数。
    (2) 如果在建立对象时选用的是无参构造函数,应
      注意正确书写定义对象的语句。
    (3) 尽管在一个类中可以包含多个构造函数,但是
      对于每一个对象来说,建立对象时只执行其中一个
      构造函数,并非每个构造函数都被执行。

  • 相关阅读:
    MySQL5.7修改默认密码、随机密码
    Java基础知识_毕向东_Java基础视频教程笔记(26 反射)
    Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)
    Java基础知识_毕向东_Java基础视频教程笔记(19-21 IO流)
    Java基础知识_毕向东_Java基础视频教程笔记(14-18集合框架)
    Java基础知识_毕向东_Java基础视频教程笔记(13 字符)
    Java基础知识_毕向东_Java基础视频教程笔记(11-12 多线程)
    JIT和AOT编译详解
    PAT 说反话
    PAT 程序运行时间
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3888180.html
Copyright © 2011-2022 走看看