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");
    }

    执行结果如下:

  • 相关阅读:
    MongoDB配置及解答mongodb cmd中安装及连接数据库 mongodb无法安装及连接数据库解答
    类封装版学生管理系统,连接数据库,增删改查,拿去用,不谢。
    python学生管理系统连接数据库版,很详细,这个是用函数版的增删改查,拿去用,不谢。
    京东双十一
    Ubuntu中以root权限运行软件sudo命令不输入密码
    Ubuntu 18.04中sudo运行的程序无法切换输入法中文输入问题
    UVA12558 埃及分数
    NOI1999 生日蛋糕
    Tarjan
    AC自动机
  • 原文地址:https://www.cnblogs.com/xing901022/p/3420186.html
Copyright © 2011-2022 走看看