• C++类构造函数


    一、概述

    类是一种用户自定义的类型,声明一个类对象时,编译程序要为对象分配存储空间,进行必要的初始化。在C++中,这项工作是由构造函数来完成的。

    大部分对象在使用之前没有正确的初始化是C++出错的主要原因。
    引入类的构造函数是正确的初始化类的对象,使该对象具有区别于其他对象的特征。
        一般什么时候触发并调用类的构造函数呢?
        答案是:当我们用类来定义一个类变量的时候,如下:
    (1)当我们用类去建立一个对象时,它首先调用类的构造函数

    class demo{.....}; 声明并定义好完整的类

    (2)调用类的无参数的构造函数

    demo d;

    (3)按参数个数不同,调用类中不同的构造函数

         demo d1(参数1,..)

    二、定义

    构造函数名和类名完全一样,可以根据不同的参数来实现重载不同的构造函数;
    构造函数是没有任何返回值的,它默认的是public,inline函数;
    构造函数可以重载,可以是无参数,有参数,有默认参数)如下:
    声明三个构造函数
    代码如下
    class item{
    public:
    item(std::string& book="" ); //带默认形参的构造函数
    item(std::string& ); //带形参的构造函数
    item(); //无形参的构造函数
    };

    三、构造函数初始化成员变量的方法

    如下面的类

    class demo(){
    public:
    //构造函数在下面添加
    private:
    int x;
    int y;
    std::string name;
    };
    构造函数初始化成员有两种方法:

    A.使用构造函数的初始化列表进行初始化
    格式:funname(参数列表):(初始化列表){}
    初始化列表: 成员名1(形参名1),成员名2(形参名2),成员名n(形参名n)
    代码:
    demo(int a=0,int b=0,std::string s=""):x(a),y(b),name(s){}

    B.使用构造函数的函数体进行初始化
    格式:funname(参数列表){函数体内赋值}
    它和传统的C函数差不多
    代码:
    demo(int a=0,int b=0,std::string s=""){
    x=a;
    y=b;
    name=s;
    }

    四、初始化方式的选择

    无参数的构造函数:主要用初始化列表来初始化成员变量
    有参数的构造函数:默认形参+初始化列表的构造函数


    由于忙着C++等级考试,还没有仔细的考虑这个函数与以前所学函数的区别,和为什么C++要设构造函数,只是大概看了下基础,待考完试可以认真研究一下这门语言。

  • 相关阅读:
    数据库得四种隔离级别(非原创,转载文章)
    c#中的数据类型简介(委托)
    c#中的数据类型简介(数组)
    c#中的数据类型简介(枚举)
    c#中的数据类型简介(string)
    c#中的数据类型简介
    二分法的查找图解
    Linux下多个.c文件的编译和Makefile文件
    C语言中const和数组
    grep和正则表达式
  • 原文地址:https://www.cnblogs.com/pangblog/p/3331347.html
Copyright © 2020-2023  润新知