一个类可以用作指针吗?

时间:2011-07-28 11:55:16

标签: c++

在我的一项任务中,我被要求在c ++中创建一个包含灯泡并能够随意切换灯泡的灯。 CLamp内部有一个CBulb的瞬间。这是实验室解决方案的一部分:

CLamp类中的

CLamp::CLamp(const CLamp& oldLamp)
{
    bptr  = new CBulb;
    *bptr = *(oldLamp.bptr);
}

CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb)
{
    CBulb *tmp = bptr;
    bptr = theNewBulb;

    return tmp;
}

主要:

CLamp lamp1(*some number*);
CBulb *testbptr = new CBulb(*some other number*);
CBulb *temp = lamp1.ExchangeBulb(testbptr);
delete temp;

那么CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb)意味着什么?什么是ExchangeBulb的成员函数?这是否意味着*ClampCBulb类型的对象?提前谢谢你的时间。

4 个答案:

答案 0 :(得分:2)

您有一个班级CLamp和一个班级CBulb

  

那么“CBulb * CLamp :: ExchangeBulb(CBulb * theNewBulb)”是什么意思?

它定义了一个名为CLamp的{​​{1}}成员函数,它指向ExchangeBulb并返回指向CBulb的指针

  

什么是ExchangeBulb的成员函数?

CBulbExchangeBulb的成员函数。它需要指向CLamp作为参数。

  

这也意味着* Clamp是CBulb类型的对象吗?

不,它没有。

我建议您阅读good C++ book

答案 1 :(得分:0)

CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb)

ExchangeBulbCLamp的成员函数。它返回指向CBulb类的指针,并指向CBulb作为参数。

答案 2 :(得分:0)

ExchangeBulb是CLamp类中的一种方法,其目的是获取一个新灯泡并替换旧灯泡。当你打电话给CBulb时,你在做什么* temp = lamp1.ExchangeBulb(testbptr);你是试图用新创建的灯泡(其他一些数字)替换灯泡(某些数字)。

ExchangeBulb是CLamp的成员。由于显而易见的原因,因为只有Lamp可以更换灯泡。 CBulb *表示你正在返回一个CBulb指针。

答案 3 :(得分:0)

ExchangeBulb是CLamp的一个功能。它改变灯泡并返回旧灯泡。

  

这也意味着* Clamp是CBulb类型的对象吗?

不,不是。