我是靠谱客的博主 爱听歌发带,这篇文章主要介绍C++ 拷贝构造,现在分享给大家,希望可以做个参考。

class MyString {
private:
	char* _data;
	size_t   _len;
	void _init_data(const char *s) {
		_data = new char[_len + 1];
		memcpy(_data, s, _len);
		_data[_len] = '';
	}
public:
	MyString() {
		_data = NULL;
		_len = 0;
		cout << "构造" << endl;
	}

	MyString(const char* p) {
		_len = strlen(p);
		_init_data(p);
		cout << "构造:" << _data << endl;
	}

	MyString(const MyString& str) {
		_len = str._len;
		_init_data(str._data);
		cout << "拷贝构造: " << str._data << endl;
	}

	MyString& operator=(const MyString& str) {
		if (this != &str) {
			_len = str._len;
			_init_data(str._data);
		}
		cout << "等号:" << str._data << endl;
		return *this;
	}

	virtual ~MyString() {
		if (_data != NULL) {
			cout << "析构:"<< _data << endl; 
			free(_data);
		}
	}
};

void Test()
{
	MyString a;// 构造
	a = MyString("Hello");// 构造:Hello 等号:Hello 析构:Hello
        MyString b = MyString("Hi");//构造:Hi(没有其他的了)
        MyString c = b;//拷贝构造:Hi
	std::vector<MyString> vec; 
	vec.push_back(MyString("World"));// 构造:World 拷贝构造:World 析构World
        //返回前:析构:World 析构:Hi 析构:Hi 析构:Hello
}

 

最后

以上就是爱听歌发带最近收集整理的关于C++ 拷贝构造的全部内容,更多相关C++内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部