????????????????????????????????????д?????????£????????????????????????????н?????????????????塢??????????????????????????????????????????????????????漰????????Щ???????????????????????
?????????????????????????????????з?????????????????????????Щ?????????
???????????deep copy????????(shallow copy)
??????????????????????????漰?????????????????????????????????????A??B??????????????????????B=A?????????????????
???????????
??????????????B?????A???????????????????B??????A???????????????B??A?????????????????????????????????????????????????????£????????A???????????????B???Щ?????????????
??????????
???????????????????????????????????????????????B??????A?????г????????????в????A???????B??????洢?????????B??????????????????????£????A?????????B??????Ч?????A??B????й???洢??????????????????????????????????
?????????????????г????????????????????????????????????????????????????????д??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ж????????
????Memberwise copy ?? Bitwise copy
????Memberwise copy:
?????????????????merberwise copy????deep copy??????????????????????????????????????и????????????????????????????????·???洢??????
????Bitwise copy??
????Bitwise copy ??????????????λ???????????????????????????????A??B??????A??????????洢???0x0-0x9?????B=A??????Bitwise copy???????壬?????????0x0??0x9???????B?????????????Bitwise???????????????????????????????????Bitwise copy = shallow copy??
???????Bitwise copy ????
??????Effective C++?????????
?????????????????????????????????????copy???????????copy assignment?????????????????????
??????????????????C++?????????ж?????????????????????????????????????????????????????????????????????????????????????ɡ???????????Щ???????????????????????bitwise copy ????????
?????????Bitwise copy????
?????????????????????????????????????????????Bitwise copy ????????????2????????????????????????????????????????????????????????磺
//?????????????bitwise copy ????
class Word
{
public:
Word(chartemp){ str = temp; };
//...
int cnt;
char str;
};
??????????????????????Word??????????????£?
int main()
{
char * temp = "hello";
Word A(temp);
Word B(A);
cout << B.str;
system("pause");
return 0;
}
???????г?????????????????????ù?????????B?????????????????????????????????????????????????????????Bitwise copy?????2?????и??????????????
?????????????????????????????????????????????????C++????????????????????????????Bitwise copy???????????????????д????????????г???????????Bitwise copy????????????????????Memberwise Initialization(??????Memberwise copy)???г?????????????????????????????????????????????г?????????????????????????date member??????????????????飩????????????????????????????????????????????е?member class object??????????????????????????????Щ???貢?????????????
?????????Bitwise copy????
????????????Bitwise copy????????????????????????????????????????????????????????????????塣???????????????????????Bitwise copy ???????
????????????????member object ????????????????и?????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????
??????????????????????麯?????
???????????????????д??????????????????????????
?????????????У???????????“?????????????????????ò???”???嵽?o????????????????????????????????????????????????????????Щ???ò??????????????е??????????????????????????????
??????????????漰???????????????????????????????á????????????????????麯????????????麯??????????廹???ж?????????????????????????????????????:
??????????????????virtual function table????????????????????????麯????????
???????????????????????????vptr)?????????????????????
????????????????????????????????????????????úó????????????????????????????????????????????????????????????????vptr??????????????????????????????????????????????????vptr????????????е??????????С???vptr??????????????????
??????????????vptr????
???????????????????vptr?????????????λ??????????????????????????vptr??????????????”bitwise copy“???????????????е????????????????????????????vptr?????????????
????-?????????vptr????????????
????????????????????????????????vptr??????bitwise copy??????????????????????????????????????????????????????????????????????????а?????????????趨?????vptr???????麯???????????????????????????????vptr??
???????????4???漰????????????????????++????????????????????й???????????????????????????????????????????????????????????????????????????????????????????bitwise copy????????Ч?????????????????????????????????????????????а????Щ?????????????У????????г??????????????е??????λ?????????????????????”λ?????????“????????????Σ?????????Bitwise copy ???????????λ????????????????????????????????????????????????vptr????????????????????????????????????????????????????á????????????????????????????????????????Щ?????????????????????????С?
???????
????????????"Bitwise copy"????????????????ж??????????????????????帴???????????????????ж?????????????У???????Щ?ж????????е??????????С??????????????????????vptr?????????????????????????????????????????????????????????????????????????????к????????????????????д??????????????????????????????????vptr????????????????????????!