zoukankan      html  css  js  c++  java
  • 析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>

    通过下面primer中的一道习题,可以更深刻的了解,析构函数,复制构造函数,赋值操作符重载,默认构造函数的使用。

    但是我的结果与primer习题解答里面的并不相同,可能是编译器不同的原因导致。

    // test1107.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct Exam{
        Exam(){ cout<<"Exam()"<<endl;} //默认构造函数
        Exam(const Exam&){ cout<<"Exam(const Exam&)"<<endl;} //复制构造函数
        Exam& operator= (const Exam&){ cout<<"Exam& operator"<<endl;return *this;} //赋值操作符
        ~Exam(){ cout<<"~Exam()"<<endl;}//析构函数
    };
    
    void func1(Exam a){}//形参为 exam的对象
    void func2(Exam& b){}//形参为 exam的引用
    Exam func3(){Exam obj;return obj;} //返回exam的对象
    
    
    int main(){
        cout<<"--------------------1----------------"<<endl;
        Exam a; //调用默认的构造函数创建对象a
        cout<<"--------------------2----------------"<<endl;
        func1(a);// 调用复制构造函数,创建副本传递实参,撤销副本
        cout<<"--------------------3----------------"<<endl;
        func2(a); //形参为引用,无需传递实参
        cout<<"--------------------4----------------"<<endl;
        a = func3(); //调用默认构造函数创建局部对象,
                    //用复制构造函数返回对象副本
                    //调用析构函数撤销局部对象
                    //调用赋值函数赋值
                    //调用析构函数撤销副本
        cout<<"--------------------5----------------"<<endl;
        Exam *b = new Exam(); //调用默认构造函数创建对象
        cout<<"--------------------6----------------"<<endl;
        vector<Exam> exec(3); //调用默认构造函数创建对象
                            //调用赋值构造函数将临时对象复制到每个元素
                            //调用析构函数撤销
    
                            //重复三次
        cout<<"--------------------7----------------"<<endl;
        delete b; //调用析构,撤销p
        cout<<"--------------------8----------------"<<endl;
        system("pause");
    }

    执行结果如下:

  • 相关阅读:
    LeetCode——Merge Two Sorted Lists
    【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP
    Java 中最常见的 5 个错误
    Linux 设备驱动的固件载入
    kettle的job中使用循环
    Servlet 容器对URI的处理
    友元函数友元类.
    【批量加入】-拼接sql字符串
    java JSONObject/JSONArray详解
    java 中文转化为拼音
  • 原文地址:https://www.cnblogs.com/xing901022/p/3420186.html
Copyright © 2011-2022 走看看