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

  • 相关阅读:
    Android打包key密码丢失找回
    Java 操作 elasticsearch 报错(1)
    Linux Hbase1.2.6 安装及使用(1)
    JAVA WEB 作用域之间的区别
    JSTL 与 EL
    HTML CSS 常用单词
    java
    CentOS 7 MySQL 5.7 主从设置
    VMware安装CentOS7后配置静态IP
    MySQL explain,type分析(转)
  • 原文地址:https://www.cnblogs.com/xuyh/p/3204285.html
Copyright © 2011-2022 走看看