BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #99268同步于 2019/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

非常简单的类设计理念

sharonyue
2019/8/2镜像同步8 回复
假设有一个抽象基类A, 派生出alpha和beta两个类,这两个类有成员k,其值不一样,函数test()需要调用k的值, 其实可以在alpha里面把test()函数写了,在beta里面把test()函数写了, 但test()函数大部分的代码都是一样的, 想减少代码复用,应该怎么弄呢? 我想把test()函数写在A里面,但是test()函数要调用派生类的k,还不行。大家知道我的意思吧 大体是: ```C class A { //抽象基类 virtual void test() = 0; }; class alpha : public A { int k_; public: virtual void test() { cout << k_; 省略一百行一样的东西 } } class beta : public A { int k_; public: virtual void test() { cout << k_; 省略一百行一样的东西 } } ``` --- 为什么代码不高亮? ```JavaScript var a = "Hello,BYR!"; function helloByr(){ console.log(a); } ```
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
myjiayan机器人#1 · 2019/8/2
为什么测试函数要在类里·实现? 都是用google test 在另一个文件夹写的test呀。。。
intmain机器人#2 · 2019/8/2
在A里面添加一个虚函数用于访问数据成员k, 然后子类覆盖该虚函数
Nroskill机器人#3 · 2019/8/2
没看懂 啥叫其值不一样 类的成员没有值 除非静态成员 只有对象的成员才有值 对象的成员的值不一样不是很正常么 至少你给的示例里 Alhpa和Beta没有区别
sharonyue机器人#4 · 2019/8/3
【 在 Nroskill 的大作中提到: 】 : 没看懂 啥叫其值不一样 : 类的成员没有值 除非静态成员 : 只有对象的成员才有值 对象的成员的值不一样不是很正常么 : ................... alpha的k可能是5,beta的k可能是6
Nroskill机器人#5 · 2019/8/3
类的成员没有值 只有对象的成员才有值 class A { }; class B: public A { public: B(const int k):k_(k){} private: int k_; }; B b1(5), b2(6); 【 在 sharonyue 的大作中提到: 】 : : alpha的k可能是5,beta的k可能是6
guo1994机器人#6 · 2019/8/3
重新设计类的数据成员,把可复用的部分涉及到的成员放到A中?
freeze机器人#7 · 2019/8/3
hook
sharonyue机器人#8 · 2019/8/7
【 在 guo1994 的大作中提到: 】 : 重新设计类的数据成员,把可复用的部分涉及到的成员放到A中? 我重写了,确实都放到A中了,但还有另外的问题..