windoze
发表于 2014-11-20 21:02
回复 99# lost_templar
你说的“静多态”是这种东西吧
template<typename T>
struct Impl : public T {
}
当你想在Impl里调用T的成员函数时,还是免不了要用static_cast<T*>(this)->method_of_T(...);
lost_templar
发表于 2014-11-20 21:45
回复 101# windoze
是的,大致是这样。
static_cast 是免不了的,但是没有虚函数的开销
windoze
发表于 2014-11-20 21:51
回复 102# lost_templar
开销还在其次,关键是太丑。
lost_templar
发表于 2014-11-20 22:19
windoze 发表于 2014-11-20 21:51 static/image/common/back.gif
回复 102# lost_templar
开销还在其次,关键是太丑。
为什么你觉得太丑?我觉得这样写很舒服
设想你一个类有100个方法,声明在一个头文件里边
struct big_class
{
virtual void method_1(){...}
virtual void method_2(){...}
//......
virtual void method_100{...}
};
这个文件会非常庞大。
然后再对这个 big_class 做点继承或者维护什么的,更是非常麻烦。
而如果将这100个接口分散到 100 个不同的文件中去
//file method_1.hp
template< tyename T >
struct method_1_impl
{
void method_1(){....}
};
//....
//file method_100.hpp
template< tyename T >
struct method_100_impl
{
void method_100(){....}
};
那么使用的时候只要选择必要的几个 method 组合一下就成了
struct my_text_editor : method_23_impl<my_text_editor>, method_72_impl<my_text_editor>
{};
my_text_editor mte;
mte.method_23();
mte.method_72();
在我看来,这比继承一个有 100 虚函数的类要优雅得多。
zsszss0000
发表于 2014-11-22 12:57
深有同感,新在很多的程序员,开口框架,闭口框架,好像有多高大上的样子,好像知道几个框架就很牛逼的样子,我不会C++,只用C,我知道在嵌入式这个方向,根本不需要这些个框架爱回复 49# windoze
codechurch
发表于 2014-12-03 12:44
慢慢你就会发现,连class都不好用。
在c里,其实每个.c文件就是class,私有的函数加static。
e2zhangwen
发表于 2014-12-03 22:56
C++个人认为功能还是比较强大的,有些接口比较方便,如果使用C实现会非常麻烦,具体得看你的工作和coding的内容了
jd808
发表于 2015-01-04 16:08
lost_templar 发表于 2014-11-20 22:19 static/image/common/back.gif
为什么你觉得太丑?我觉得这样写很舒服
设想你一个类有100个方法,声明在一个头文件里边这个文件会非 ...这你得对这个文件也太多了,大的也可以将他拆成几个类来实现,每个类实现一个特定功能,用起来还是比文件的好。可能每个人编程习惯不一样,没有哪个好哪个坏,如果是大型项目组,用类还是好很多,大家都有面向对象的基础,面向过程编程,学校早就不教了。你非要吧文件说成对象,也不是不可以,但这要很深的功底,因为文件没有规范,类是有规范,一个类就是干一个活,不管你怎么扩展这个类,反正干的都是这个类应该干的活,而文件虽说也可以,但新学者没这个感念,肯定吧代码搞得一团糟,也不利于大型项目的开发,比如我们要实现一个功能,组长只需要写一个接口,下面的人继承这个接口,里面必须要实现这些函数,先不论他代码写的怎么样,至少他在按照组长的思路在写这个,最后出来的东西也是会符合技术架构图上规定的规范的。新人进来一看架构图很容易上手。文件的话就没办法了。
tan1301230147
发表于 2015-01-28 10:51
回复 2# hellioncu
用vc写法 和C写法有出入,还不如直接用C语法写来的好 效率上说不定还快些,记也好记
jimopt
发表于 2015-09-08 10:18
好好学习Clean code这本书的思想完,就不会这样认为了。除非你写得程序一直都很小型,或者生命周期都很短。
页:
1
2
3
4
5
6
7
8
9
10
[11]
12