面向对象C++类中声明成员属性时,指针和引用的区别和用法?以及如何初始化?

2024-11-26 01:11:19
推荐回答(1个)
回答1:

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();即可

指针:

指向在对象所在的地址,声明时可以不定义,而后,还可以更改其所指向的地址,改为指向其他对象,可以变化,这个引用不行