麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

學習筆記.錯誤整理 拷貝構造函數(shù)的重要性

2019-11-14 12:28:54
字體:
來源:轉載
供稿:網(wǎng)友

  今天在學習時隨手編了一個小程序, 然而運行時卻發(fā)現(xiàn)總在出錯,而且每次的斷電都顯示在析構函數(shù)的delete 一行。起初時時百思不得,后來才發(fā)現(xiàn)問題所在,自我反思后覺得這是一個對我這樣的初學者來講很重要的問題。   問題出在PRint函數(shù)上是很明顯的,但到底是什么原因呢?#include<iostream>using namespace std;class Person{public :	Person()	{		name = NULL;		cout << "Default consturctor called!/n/n";	}	Person(char *str)	{		name = new char [strlen(str) + 1];		strcpy_s(name, strlen(str) + 1, str);		cout << "Consturctor called!/n/n";	}		~Person()	{		delete[] name;//斷點總在此處		cout << "Destructor called!/n/n";	}	friend ostream& Operator << (ostream& out, Person &A)	{		out << A.name << endl;		return out;	}	friend istream& operator >> (istream& in, Person &A)	{		char temp[10];		in.getline(temp, 10);		int len = strlen(temp) + 1;		A.name = new char[len];		strcpy_s(A.name, len, temp);		return in;	}	friend void Print(Person a)	{		cout << a.name << endl;	}private :	char *name;};int main(){	Person a("mike");	//cin >> a;	Print(a);	//cout << a;	system("pause");	return 0;} 

  關鍵在于深淺拷貝的問題,這里可以看到在Print函數(shù)中傳過去的是一個對象,要命就要命在成員中有一個指針。   我們知道, C++中將對象作為參數(shù)時,并非將對象直接傳過去,而是調用拷貝構造函數(shù)傳過去一個對象的副本。而在函數(shù)結束后調用析構函數(shù)。當函數(shù)中沒有定義拷貝構造函數(shù)時,就會調用默認的拷貝構造函數(shù)。但不幸的是這個默認的函數(shù)采用的是“淺拷貝”,也就是說它僅僅將指針本身的值復制過去。造成的后果是兩個指針指向同一處,這樣在函數(shù)結束后調用析構函數(shù)釋放該處內存空間, 在程序結束后又是釋放一次,自然就導致了錯誤。   解決方法很簡單,定義一個拷貝構造函數(shù)就行了。

Person(const Person &a)	{		name = new char[strlen(a.name) + 1];		strcpy_s(name, strlen(a.name) + 1, a.name);		cout << "Copy constructor called!/n/n";	}由此可以得到一個教訓:當成員中含指針是, 必須要自定義拷貝構造函數(shù)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人不卡免费视频 | 欧美国产永久免费看片 | 欧美 日韩 国产 在线 | 日本高清电影在线播放 | 嗯啊羞羞视频 | 手机免费看一级片 | 国产羞羞网站 | 亚洲视频在线观看免费 | 牛牛a级毛片在线播放 | 三人弄娇妻高潮3p视频 | 久久国产精品电影 | 欧美视频一区二区三区 | 精品久久久久久久久久中出 | 国产日韩成人 | 亚洲综合精品 | 午夜视频在线观 | 午夜视频在线观看免费视频 | 亚洲国产成人一区 | 中国洗澡偷拍在线播放 | 国产亚洲精品美女久久久 | 日本不卡一区二区三区在线观看 | 毛片电影网址 | 日韩精品一二三区 | 日本在线观看视频网站 | 免费永久在线观看黄网 | 亚洲视频高清 | 免费a级黄色片 | 毛片在线免费观看完整版 | 免费在线看a | 国产免费观看a大片的网站 欧美成人一级 | 91a在线观看| 久久免费激情视频 | 91精品国产一区二区三区动漫 | 超碰一区 | 成人性爱视频在线观看 | 日韩视频一二区 | 青草久久久久 | 国产午夜探花 | 午夜视频中文字幕 | 娇妻被各种姿势c到高潮小说 | 国产www免费|