• 构造函数


    基本用法

    //类声明文件stock.h
    #ifndef UNTITLED_STOCK00_H
    #define UNTITLED_STOCK00_H
    
    #include <string>
    
    class Stock
    {
    private:
        std::string company_;
    public:
        Stock(); //默认构造函数
        Stock(const std::string &company);
        void show();
    };
    #endif //UNTITLED_STOCK00_H
    //类方法定义文件stock.cpp
    #include <iostream>
    #include <string>
    #include "stock00.h"
    
    void Stock::show()
    {
        std::cout<<company_<<std::endl;
    }
    
    Stock::Stock()
    {
        company_ = "xmm";
        std::cout<<"use default constructor"<<std::endl;
    }
    
    Stock::Stock(const std::string &company)
    {
        company_ = company;
        std::cout<<"use constructor"<<std::endl;
    }
    //使用文件main.cpp
    #include <iostream>
    #include "stock00.h"
    using namespace std;
    
    int main()
    {
        Stock S; //调用默认构造函数
        //注意:Stock S();声明了一个返回Stock的函数而不是调用默认构造函数
        S.show();
    
        Stock S1("xumaomao"); //隐式的调用构造函数
        //Stock S1 = Stock("xumaomao"); //显式的调用构造函数
        S1.show();
        return 0;
    }

    必须使用列表初始化的情况

    class ConstRef
    {
    public:
        ConstRef(int ii);
    private:
        int i;
        const int ci;
        int &ri;
    };
    
    ConstRef::ConstRef(int ii): i(ii), ci(ii), ri(i) {}

     注意:成员初始化的顺序与它们在类定义中出现的顺序一致。

    复制构造函数

    新建一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。

    以下4中情况都将调用复制构造函数:

    StringBad ditto(motto);
    StringBad metoo = motoo;
    StringBad also = StringBad(motto);
    StringBad * pStringBad = new StringBad(motto);

    注意:如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据(因为默认复制构造函数自会复制这个指针而不会复制指针指向的数据,这样在用析构函数释放内存时回导致同段内存被多次释放的问题),这被称为深度复制。

  • 相关阅读:
    指令汇B新闻客户端开发(三) 下拉刷新
    安卓消息推送解决方案
    java常用的7大排序算法汇总
    内存溢出的解决方案
    指令汇B新闻客户端开发(二) 主页面布局
    指令汇B新闻客户端开发(一) 新手引导页开发
    2015最流行的Android组件、工具、框架大全
    安卓开发过程中空指针的问题Java.lang.NullPointerException
    闪屏页面开发遇到的问题you need to use a theme.appcompat theme (or descendant)
    8、杂散性问题
  • 原文地址:https://www.cnblogs.com/xumaomao/p/11068489.html
Copyright © 2020-2023  润新知