新命令在堆中分配內存來存儲對象。 靜態分配可能會導致將對象放在堆棧上。 但它們都不是內存保護區。 我可以訪問這個,它是對象的只是地址,然後使用間接運算符,所以指向的對象字段:明顯封裝
string str=string("hello");
void** str_this=(void**)&str;
char* str_data= (char*)*str_this;
str_data[0]='s';
str_data[1]=0;
cout <<str_data; // prints "sello"
所以這仍然被認爲是封裝?是否負責類實例化用戶(誰實例化對象)以避免數據泄露?
C++標準和它的這部分基於的OOP原則是共享約定,而不是法規。根據自己的需要,您可以隨意遵守或不遵守您的意見。就我個人而言,我覺得服從封裝總是有用的。你可能會發現違反封裝有用。給他自己的。 – 2012-03-01 19:14:59