zoukankan      html  css  js  c++  java
  • c++ 复制+赋值+析构

    对于需要管理资源(譬如内存)的类,一般均需要自行定义复制、赋值、析构函数,以确保正确、合理的语义和对资源的妥善管理。
    T::T();  //one or more constructors, perhaps with arguments
     
    T::~T() // the destructor
    T::T(const T&)    // the copy constructor
    T::operator=(const T&)  // the assignment operator
     
    构造函数、析构函数与赋值函数是每个类最基本的函数。每个类只有一个析构函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)和 多个赋值函数(除了同类的赋值以外,还有其他的赋值方法)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数,如
    A(void);                    // 缺省的无参数构造函数
    A(const A &a);              // 缺省的拷贝构造函数
    ~A(void);                   // 缺省的析构函数
    A & operate =(const A &a);  // 缺省的赋值函数
     
    有几个需要注意的内容:
    @ 构造函数与析构函数的另一个特别之处是没有返回值类型
    @ 构造从类层次的最顶层的基类开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,在析构的时候,最低层的派生类的析构函数最开始被调用,然后调用每个基类的析构函数
    @ “缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”而非“值拷贝”的方式来实现,倘若类中含有指针变量,这两个函数注定将出错
     
    深入:
  • 相关阅读:
    ASP.NET-FineUI开发实践-9(四)
    ASP.NET-FineUI开发实践-9(三)
    ASP.NET-FineUI开发实践-9(二)
    ASP.NET-FineUI开发实践-9
    ASP.NET-FineUI开发实践-8(二)
    ASP.NET-FineUI开发实践-8
    ASP.NET-FineUI开发实践-7
    ASP.NET-FineUI开发实践-6(三)
    ASP.NET-FineUI开发实践-6(二)
    ASP.NET-FineUI开发实践-6
  • 原文地址:https://www.cnblogs.com/youxin/p/2542310.html
Copyright © 2011-2022 走看看