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

📄 d_dynam.h

📁 数据结构c++语言描述stl版 威廉兄弟的好书,值得看,这是配书代码
💻 H
字号:
#ifndef DYNAMIC_CLASS
#define DYNAMIC_CLASS

#include <iostream>

using namespace std;

template <typename T>
class dynamicClass
{
	public:
		// constructors
		dynamicClass(const T& m1, const T& m2);
		dynamicClass(const dynamicClass<T>& obj);
        
		// destructor
		~dynamicClass();

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

	private:
		// data of type T and a pointer to data of type T
		T member1;
		T *member2;
};

// constructor with arguments to initialize the data members.
// use constructor initialization list to give member1 the
// value m1
template <typename T>
dynamicClass<T>::dynamicClass(const T& m1, const T& m2):
	member1(m1)
{
	// allocate dynamic memory. initialize it with value m2
	member2 = new T(m2);
	cout << "Constructor: " << member1 << '/'
		  << *member2 << endl;
}


// copy constructor. initialize new object to have the
// same data as obj. use constructor initialization
// list to give member1 the value obj.member1
template <typename T>
dynamicClass<T>::dynamicClass(const dynamicClass<T>& obj):
	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 the dynamic memory allocated
// by the constructor
template <typename T>
dynamicClass<T>::~dynamicClass()
{
	cout << "Destructor: " << member1 << '/'
		  << *member2 << endl;
	delete member2;                 
}

// overloaded assignment operator. returns a reference to 
// current object
template <typename 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_CLASS

⌨️ 快捷键说明

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