zoukankan      html  css  js  c++  java
  • C++类中使用new及delete小例子(续)

        在该示例中我们显式定义了复制构造函数来代替默认复制构造函数, 在该复制构造函数的函数体内, 不是再直接将源对象所申请空间的地址赋值给被初始化的对象, 而是自己独立申请一处内存后再将源对象的属性复制过来, 此时book1对象的 book_name 与 book2 对象的 book_name 就是指向两处不同的内存单元, 这样即便是源对象 book1 被销毁后被初始化的对象book2也不会再受到影响。

    #include <iostream>
    using namespace std;

    class book
    {
     private:
      char * book_name;
     public:
      book(const char * name)
      {
       cout << "create space ";
       book_name = new char [strlen(name) +1];
       strcpy(book_name, name);
      }
      book(const book & b)
      {
       cout << "create space also ";
       book_name = new char [strlen(b.book_name) + 1];
       strcpy(book_name, b.book_name);
      }
      ~book()
      {
       cout << "delete space ";
       delete [] book_name;
      }
      void show_book()
      {
       cout << "book_name: " << book_name << endl;
      }
    };
    int main()
    {
     book BOOK1("c++ primer plus");

     book BOOK2(BOOK1);

     BOOK1.show_book();

     BOOK2.show_book();

     return 0;
    }

  • 相关阅读:
    行转列
    multipath 安装配置
    网卡绑定
    numa对MySQL多实例性能影响
    Fatal NI connect error 12170
    REVOKE DBA权限要小心
    Oracle 数据库整理表碎片
    listagg 函数
    10046 事件补充
    tkprof 解释
  • 原文地址:https://www.cnblogs.com/xuyh/p/3204285.html
Copyright © 2011-2022 走看看