zoukankan      html  css  js  c++  java
  • 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++要设构造函数,只是大概看了下基础,待考完试可以认真研究一下这门语言。

  • 相关阅读:
    剑指offer:面试题25、二叉树中和为某值的路径
    剑指offer:面试题24、二叉搜索树的后续遍历序列
    剑指offer:面试题23、从上往下打印二叉树
    剑指offer:面试题22、栈的压入、弹出序列
    剑指offer:面试题21、包含min函数的栈
    剑指offer:面试题20、顺时针打印矩阵
    剑指offer:面试题19、二叉树的镜像
    剑指offer:面试题18、树的子结构
    剑指offer:面试题17、合并两个排序的链表
    剑指offer:面试题16、反转链表
  • 原文地址:https://www.cnblogs.com/pangblog/p/3331347.html
Copyright © 2011-2022 走看看