1 #define _CRT_SECURE_NO_WARNINGS
2 #include <iostream>
3 #include <cstring>
4 using namespace std;
5
6 //默认拷贝构造只是值传递,对于数据有效,对于指针则是同一个指向,需要重写一下拷贝构造
7 //类的内部有指针分配内存,需要深拷贝,否则需要浅拷贝
8 class mystring
9 {
10 public:
11 char *
pstr;
12 int length;
13
14 public:
15 mystring(
char *
str)
16 {
17 this->length = strlen(str) +
1;
18 this->pstr =
new char[
this->length]{
0 };
19 strcpy(
this->pstr, str);
//初始化
20 }
21
22 //拷贝构造
23 mystring(
const mystring &
mystr)
24 {
25 this->length =
mystr.length;
26 this->pstr =
new char[
this->length]{
0 };
27 strcpy(
this->
pstr, mystr.pstr);
28 }
29
30
31 void show()
32 {
33 cout << length <<
" " << (
void *)pstr <<
" " <<
endl;
34 }
35 };
36
37
38 void main()
39 {
40 mystring str1(
"gogogo");
41 str1.show();
42 //浅拷贝指向的地址都一样
43 mystring str2(str1);
44 str2.show();
45 cin.
get();
46 }
转载于:https://www.cnblogs.com/xiaochi/p/8593415.html
转载请注明原文地址: https://win8.8miu.com/read-26980.html