⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamic.h

📁 经典数据结构书籍 数据结构C++语言描述 的源代码 很难找的哦
💻 H
字号:
#ifndef DYNAMIC_DEMO_CLASS
#define DYNAMIC_DEMO_CLASS

#include <iostream.h>

template <class T>
class DynamicClass
{
    private:
        // variable of type T and a pointer to data of type T
        T member1;
        T *member2;
    public:
        // constructors
        DynamicClass(const T& m1, const T& m2);
        DynamicClass(const DynamicClass<T>& obj);
        
        // destructor
        ~DynamicClass(void);

        // assignment operator
        DynamicClass<T>& operator= (const DynamicClass<T>& rhs);
};

// constructor with parameters to initialize member data
template <class T>
DynamicClass<T>::DynamicClass(const T& m1, const T& m2)
{
    // parameter m1 initializes static member
    member1 = m1;
    // allocate dynamic memory. initialize it with value m2
    member2 = new T(m2);
    cout << "Constructor: " << member1 << '/'
         << *member2 << endl;
}

// copy constructor. initialize mew object to have the
// same data as obj.
template <class T>
DynamicClass<T>::DynamicClass(const DynamicClass<T>& obj)
{
    // copy static data member from obj to current object
    member1 = obj.member1;              
    // allocate dynamic memory and initialize it with
    // value *obj.member2.
    member2 = new T(*obj.member2); 
    cout << "Copy Constructor:  " << member1
         << '/' << *member2 << endl;
}

// destructor. deallocates dynamic memory allocated
// by the constructor
template <class T>
DynamicClass<T>::~DynamicClass(void)
{
    cout << "Destructor: " << member1 << '/'
         << *member2 << endl;
    delete member2;                 
}

// overloaded assignment operator. returns a reference to 
// current object
template <class T>
DynamicClass<T>& DynamicClass<T>::operator=
               (const DynamicClass<T>& rhs)
{
    // copy static data member from rhs to the current object
    member1 = rhs.member1;
    // contents of dynamic memory must be same as that of rhs
    *member2 = *rhs.member2;        
    cout << "Assignment Operator: "<< member1 << '/'
         << *member2 << endl;
    return *this;                   
}

#endif  // DYNAMIC_DEMO_CLASS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -