• C++ 进阶5 拷贝构造 深度复制 运算符重载


    C++ 进阶5 拷贝构造 深度复制 运算符重载 20131026

    例子: 运行环境是G++ 编译,

    /*

     * main.cpp

     *

     *  Created on: 2013年10月26日

     *      Author: yangtfei

     */

    #include <iostream>

    #include <cstring>

    #include <stdlib.h>

    #include <stdio.h>

    using namespace std;

    class Base{

    private:

        int val;

        char * str;

    public:

        Base(const char * str, const int v){

            this->val = v;

            int len  = strlen(str);

            this->str = new char[len+1];

            strcpy(this->str,str);

        }

        Base(const Base & b){

            this->val = b.val;

            int len  = strlen(b.str);

            this->str = new char[len+1];

            strcpy(str, b.str);

        }

        Base& operator=(const Base& b){

            this->val = b.val;

            int len =  strlen(b.str);

            this->str = new char[len+1];

            strcpy(str,b.str);

            return *this;

        }

        ~Base(){

            delete this->str;

            cout << "Base::~Base()" << endl;

        }

        void printInfo(){

            cout << "val:" << this->val << ", name:" << this->str << endl;

        }

        void setName(const char * name){

            if(this->str!= NULL){

                delete str;

                str = NULL;

            }

            int len  = strlen(name);

            str = new char[len+1];

            strcpy(str,name);

        }

    };

    void getMemory(char ** p , int num){

        *p =(char*) malloc(num);

    }

    int main(){

        Base b("yang",10);

        Base c = b;

        Base d (b);

        b.printInfo();

        c.printInfo();

        d.printInfo();

        b.setName("teng");

        c.setName("fei");

        b.printInfo();

        c.printInfo();

        d.printInfo();

        return 0;

    }

  • 相关阅读:
    Numpy(0)
    C++(成员函数做友元)
    C++(类做友元)
    CUDA---Arrayfire---添加cuda kernel
    CUDA--Arrayfire--类型转换
    C++(友元)
    C++(const修饰成员函数)
    C++(空指针访问成员函数)
    第9章 整合前端
    第8章 离不开的数据库
  • 原文地址:https://www.cnblogs.com/hbhzsysutengfei/p/3409506.html
Copyright © 2020-2023  润新知