在C++中,对象的赋值的区别
例如:class A{......};
class B{......};
*a=&b
&ra=b
fa=b
这三种的区别,特别是指针和引用,看起来都是一样的,都是传递地址值,不知道有何不同
例如:class A{......};
class B{......};
*a=&b
&ra=b
fa=b
这三种的区别,特别是指针和引用,看起来都是一样的,都是传递地址值,不知道有何不同
答案:指针和引用没有什么太大的不同,99%的情况下功能上是等效的,实际实现上你已经知道了都是传地址的。逻辑相同的情况下用这两者写的代码在编译成机器码之后也是相同的(校验代码和特定编译器的独特思路除外)。只是为了使用方便才引入了引用这种类型,唯一需要注意的是C++不允许引用的引用,而允许指针的指针,在泛型编程的时候需要注意。在OO以及OP应用时没有什么区别,根据自己习惯好用就行。
fa=b是调用A的拷贝构造函数,复制b中继承自类A的东西构造一个新的对象。你可以理解为只是隐式类型转换,调用了拷贝构造函数,而B继承了A的拷贝构造函数,与自己的拷贝构造函数形成静态编联的一个多态关系。
指针的话,系统中就会有一个指针变量,在内存中占4个字节,存储了所指向的地址
引用的话,就是被引用变量的一个别名,系统内存中并不分配空间来存储这个“别名”
上一个:编写C++程序函数,求行列式的值
下一个:关于VB .VC和C++