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) 尽管在一个类中可以包含多个构造函数,但是
  对于每一个对象来说,建立对象时只执行其中一个
  构造函数,并非每个构造函数都被执行。

原文地址:https://www.cnblogs.com/fengdashen/p/3888180.html