- 主题:一直把C++当作带类的C使用
这条路走到极端完全抛弃泛型编程什么都用虚拟函数就是 java
大部分用虚拟函数,偶尔用一下 stl 和模板那就是 Qt. 属于 cpp 世界的非主流。
【 在 csu1992 (csu1992) 的大作中提到: 】
: 用的最多的是 virtual 函数和 stl.
--
FROM 125.78.67.*
我只是陈述一个现状啊。
当年(winxp时代了)我因为兴趣在虚拟机里面玩 DOS 的时候,borland c++ 也没有模板。当时的人不知道是怎么用 c++ 的。
【 在 csu1992 (csu1992) 的大作中提到: 】
: 为什么要抛弃?为什么要偶尔用下stl? C++支持那么多的paradigm, 交叉着用不爽么?
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
要我看,c# 和 java 的模板都走太远了。只支持 vector<int>, list, map 这些容器就够了。别搞函数和用户自定义类的泛型。
【 在 leslin (我心有约) 的大作中提到: 】
: 模板感觉做到c#那个程度刚刚好
: c++走的太远了
: java的又太弱智
: ...................
--
FROM 112.47.232.*
80% 够用就是最佳。剩下 20% 太过复杂的语法,有更高明的方式实现。
c++ 泛型的由来是静态语言太繁琐,需要动用代码生成器辅助用户生成代码。我觉得,应该向 NIM 学习在编译器操纵AST,但是更彻底地把代码生成器独立成新的模块,而不是用一套奇怪的语法混在普通代码里面。我看应该这样子。
// demo.ct
void withLogging(auto func) {
func.beforeCall(function("logging"));
}
// main.cpp
void logging() {}
@withLogging
void sayHello() {}
编译器编译两遍,第一遍编译工程里面所有的 *.ct, 第二遍编译 *.cpp,把 ast 交给第一遍代码处理之后再编译。两份代码都是 plain old c++,事情不就简单了。大多数泛型都可以省了。
【 在 here080 (hero080) 的大作中提到: 】
: 你这里定义不明确啊。
: 不能搞“我的脚掌长就是one feet”这种定义方式啊。
--
修改:hgoldfish FROM 125.78.67.*
FROM 112.47.122.*