我是靠谱客的博主 爱听歌发带,最近开发中收集的这篇文章主要介绍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++ 拷贝构造所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部