c++ 形参用指针 还是对象_铲屎官,来看看指针~

11cd025e0eda6a1dcd093cfa99e6cdcd.png

  (本来应该好好学习努力工作的我脑子静不下来,就着这个土味版标题来记录一发刚了解不久的知识点)

  大学学C的时候老师就说这个指针好呀,真好,用起来容易出错,但真的好。但哪里好呢?考试不考,我就记住了结论:好。

  后来好久不用C,前一阵学C++,看了个博客说,这个指针哪,允许你直接对内存进行操作,是很多其他高级语言比不了的。嗯,果真是好,但是还是很抽象啊,就我这个level平时操不操作内存很佛系的呀。

  然后上个月看“继承与派生”的时候,老师讲了个例子,觉得果然指针是好,忍不住记录下来。话说需要两个类来记录小区的养喵信息,就需要两个类:喵主子类和铲屎官类。一个喵主子只能有一个铲屎官(私喵定制的),一个铲屎官最多伺候十个主子。怎么写这两个类呢?

  • 办法一:
为喵设一个铲屎官类的成员对象;
同时为铲屎官类设一个喵类的对象数组。
class CCat;
class CChanshi{
CCat cats[10];
};
class CCat{
CChanshi cs;
};

  看着简单又直接,但这种方法是人中有喵,喵中有人,因为CChanshi的构造函数要调用CCat的构造函数,而CCat的构造函数又要调用CChanshi的构造函数,属于循环定义,编译不通过。

  • 第二个办法
为喵设一个铲屎官类的成员对象;
同时为铲屎官类设一个喵类的对象指针数组。
class CCat;
class CChanshi{
CCat *cats[10];
};
class CCat{
CChanshi cs;
};

  但这样写又有另一个问题,不同的喵可以拥有同一个铲屎官,如何维护不同的喵的相同铲屎官信息呢?

  • 办法三
为喵类设一个铲屎官类的对象指针;
为铲屎官类设一个喵类的对象数组。
class CChanshi;
class CCat{
CChanshi *pcs;
};
class CChanshi{
CCat cats[10];
};

  然鹅,这样的话又和实际情况有点出入。因为喵不是铲屎官的固有属性,这里面的喵都失去了自由,所有的喵类对象都包含在铲屎官的对象里,没法独立操作。喵也有喵权,这样对喵们不公平。

  • 办法四(解决办法来了)
为喵类设一个铲屎官类的对象指针;
为铲屎官类设一个喵类的对象指针数组。
class CChanshi;
class CCat{
CChanshi *pcs;
};
class CChanshi{
CCat *cats[10];
};

  这样就实现了对喵和铲屎官的分别操作,因为是指针,不会涉及到方法一里循环定义的问题,喵类里可以维护喵本身的信息,除了铲屎官之外,还有体重呀,性别呀,毛皮颜色啊,品种等等;而铲屎官类里可以维护除了伺候的喵之外的信息,比如年纪呀,性别呀,喜不喜欢狗狗啊,收入啊等等。

  虽然这么说着挺简单,但实现的时候还是得慢慢熟悉,比如做那道 魔兽世界 的题,也是类似的操作:部落有不同的怪兽和战士,怪兽和战士属于某一个部落。自己写的时候几乎要被绕晕,借助网络的力量才勉强啃下来,争取更熟练吧~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值