很奇怪的事情 这是为何呢?解决思路

很奇怪的事情 这是为何呢??
.h
class   b
{
        public   :
                void   ww(void)
                {
                        ShowMessage( "ok ");
                }
};
class   a
{
        public   :
                ss(b*bb)
                {
                        bb-> ww();
                }
        private:
};


class   TForm1   :   public   TForm
{
__published: //   IDE-managed   Components
        TButton   *Button1;
        TButton   *Button2;
        void   __fastcall   Button1Click(TObject   *Sender);
        void   __fastcall   Button2Click(TObject   *Sender);
private: //   User   declarations
        b   *bb;
        a   aa;
public: //   User   declarations
        __fastcall   TForm1(TComponent*   Owner);
};


.cpp
TForm1   *Form1;

//---------------------------------------
__fastcall   TForm1::TForm1(TComponent*   Owner)
        :   TForm(Owner)
{
}
//---------------------------------------


void   __fastcall   TForm1::Button1Click(TObject   *Sender)
{
        bb=new   b();
        aa.ss(bb);
        delete   bb;
        bb=NULL;
       
}
//---------------------------------------

void   __fastcall   TForm1::Button2Click(TObject   *Sender)
{
        aa.ss(bb);    
}
//---------------------------------------


问题1:   无论是先按Button2   还是先按Button1   都会弹出 "OK "也就是说函数   void   ww(void)都会执行.     而且如果我把   aa.ss(bb);   改为   aa.ss(NULL);   也会正常执行.   结果无变化.  

问题   2:
大家都把   参数封装为类   解决参数不同的问题,但是如不需要任何参数呢   该怎么解决??   把参数对象赋值为NULL   吗??可是这样不行哦!

------解决方案--------------------
问题一是因为你的aa.ss中调用bb-> ww()函数里虽然传进了一个b*,但是没有用到this指针(这里的this就是bb),
所以aa.ss(bb); 和 aa.ss(NULL)调用都没有问题。


------解决方案--------------------
学习中
------解决方案--------------------
类的成员函数(b::ww())的实现类似于

ww(b* this), so bb=NULL时也能显示.

((b*)NULL)-> ww();也可以
------解决方案--------------------
当然,因为你没有引用class b的数据成员,仅仅使用了它的方法,而这个方法又没有使用它的数据成员,所以,不管你传入的是什么类型的数据,都会执行正常ww。

对于一个类,如果有数据成员,则每个类实例的数据成员都会有一个地址,但是不管有没有数据成员,这个类的方法只会有一个地址。