class B
{
public:
B(A& a):ra(a){
//A ma这个可以不用初始化了,可以直接用
//A& ra; 这个需要在初始化列表中初始化 ra(a)
pa = NULL;//一般直接初始化为NULL,你也可以通过构造方法给传进来个参数
}
A ma;
A& ra;
A* pa;
A中的mrA,要如何初始化?
和B中的A& ra的初始化方法一样,都是使用初始化列表初始化,然后就不报错了
这时(*p).ma与p->ma有什么区别?
这个在最终的用途上是没有区别的,都是调用对象的ma成员变量,只是写法不一样
(*p) 这个表示的是一个对象,所以 后面是 (*p).ma
p 是个指向对象的指针 所以是p->ma
我发现->可以连用好几个但是.不行,即可以p->pa->mpB->pa->c,但是要在构造函数中实例指针的对
这个没看明白呀!(指针在使用前,一定要初始化,让它指向一个真实的对象,不让程序就崩溃了)
引用:
是给一个对象起一个别名,在声明的时候就得定义,明确它所指向的对象,而且以后就不可以更改了,所有对引用的操作,都会影响原来的对象。使用时直接使用 a.function();即可
指针:
指向在对象所在的地址,声明时可以不定义,而后,还可以更改其所指向的地址,改为指向其他对象,可以变化,这个引用不行