需要注意,在C++的类定义中,有赋值构造函数和拷贝构造函数。所以在执行A b=a操作时,会重新分配空间,属于深赋值。
cout<<"vector是对象,深赋值"<<endl;
vector<string> a={"a","f","g"};
vector<string> b =a;
b[2] = "kk";
for(int i = 0; i < 3; i++){
cout<<a[i];
}
cout<<endl;
for(int i = 0; i < 3; i++){
cout<<b[i];
}
cout<<endl;
cout<<"string是对象,深赋值"<<endl; //注意d和c的首地址不一样,但d==c时为true
string c = "string";
string d = c;
d[2] = 'p';
cout<<c<<","<<d;
cout<<endl;
cout<<"char*,浅赋值:"<<endl;
// char *e = new char[3];
const char * temp = c.c_str();
char *e = const_cast<char*>(temp);
char *f = e;
*(++f) = 'h';
cout<< e <<","<<f;
cout<<endl;
结果:
vector是对象,深赋值
afg
afkk
string是对象,深赋值
string,stping
char*,浅赋值:
shring,hring