c++对象变量和对象指针
比如std :: string str和std :: string &a=str和std :: string * p=&str中
str 、a、p各有什么区别?对象的引用 a 是不是就和定义该对象的变量 str 完全等价?
str 是string 类型的对象(实际就是该类型的一个变量)
a是str的引用,也就是其别名,就和str完全等价
p是string类型的指针,存放的是str的存储地址,不是string类型变量
std::string str 是string 的对象。 string &a 是str的引用,操作a可以改变str的所保存的数据。*p和&a 等价,操作*p也可以改变str所指向的数据。
str 是string类的一个对象
a 只是一个string类的引用,他指向str对象,对他的操作,就等同对对象str对象的操作,但是不同的是a没有被分配内存地址,只相当于str对象的一个别名,
p是string类型的一个指针,他指向str对象,对P的操作也等同对str的操作,但是与a不同的 是p 被分配了内存,
直接声明的为栈变量,由系统自动分配内存和释放,为局部变量,在退出本函数以后,自动释放。
new出来的需要是指针变量。new出来的变量存储在堆上,在退出本函数以后,如果,没有delete,将发生内存泄漏。可以转化成全局变量。
浙公网安备 33010602011771号