C++泛型编程和元编程区别

自由技艺 2020-01-06 10:41:45
加精
什么是元编程 。。。
...全文
3962 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
2018zhong 2020-03-14
  • 打赏
  • 举报
回复
元编程是程序的运行期,泛型是modal吧
poy49295 2020-02-18
  • 打赏
  • 举报
回复
个人觉得元编程是C++里面最难最深奥的部分。
weixin_46312703 2020-02-11
  • 打赏
  • 举报
回复
这个问题有点儿大,建议看一下《c++ templates》。
简单说泛型其实就是模板编程。
元编程就是一种利用模板编程达到在编译期实现程序逻辑的一种方式
  • 打赏
  • 举报
回复

泛型元编程,吓跑新手没商量!榨干编译器设计师的脑细胞,还拖慢编译速度、吃尽编译内存。泛型编译错误是最晦涩难懂的,输出一大堆,不知所云。泛型是给库的设计师用的,而且是开源库。

xiaoxiangqing 2020-01-20
  • 打赏
  • 举报
回复
元编程是用来产生代码的程序,操纵代码的程序,在运行时创建和修改代码而非编程时,这种程序叫做元程序
  • 打赏
  • 举报
回复
C++模板是静态的,不能“在运行时创建和修改代码”,不同于Java、C#的泛型
donwmufromdying 2020-01-19
  • 打赏
  • 举报
回复
元=meta。
  • 打赏
  • 举报
回复
C++元编程就是使用泛型的一种编程模式,典型如STL、Boost
threenewbee 2020-01-10
  • 打赏
  • 举报
回复
引用 10 楼 yshuise 的回复:
元编程虽然可以生成代码,但是宏业业可以吧,宏能不能叫元编程,我觉得应该叫模板元编程


宏也可以算元编程,但是它的编程性有限,所以一般我们不把它叫做编程,但是模板不同。模板是图灵机完备的,这意味着它可以实现任意的功能。
yshuise 2020-01-10
  • 打赏
  • 举报
回复
元编程虽然可以生成代码,但是宏业业可以吧,宏能不能叫元编程,我觉得应该叫模板元编程
SmallCoder1992 2020-01-10
  • 打赏
  • 举报
回复
你这不是模板的特化吗?
threenewbee 2020-01-10
  • 打赏
  • 举报
回复 3
元编程就是编程的编程。编写一个程序来生成程序。
类似地,元数据就是描述数据的数据 https://baike.baidu.com/item/%E5%85%83%E6%95%B0%E6%8D%AE/1946090?fr=aladdin
元学习就是学习如何学习 https://blog.csdn.net/qq_34886403/article/details/82664879
元哲学就是研究哲学的哲学 https://baike.baidu.com/item/%E5%85%83%E5%93%B2%E5%AD%A6/1008459?fr=aladdin

元xx = xx的xx

当你掌握了这种构词方式后,你就可以发明新的名词。

比如说你和你媳妇两个人就是否要吵架这个问题吵了一架。你们这就是元吵架。


对于c++来说,模板编程就是编写一个程序(模板),用来控制编译器展开模板生成一堆代码,代码生成了代码,所以是元编程。任何为了生成代码而编写的代码,都是元编程。
yshuise 2020-01-09
  • 打赏
  • 举报
回复
编译期就运行的代码叫元编程
taodm 2020-01-09
  • 打赏
  • 举报
回复
元编程也是泛型编程的一部分,但是,不直接实例化为代码那些部分
真相重于对错 2020-01-06
  • 打赏
  • 举报
回复
上边我举的是最简单的栗子 更复杂的例如c++的反射
真相重于对错 2020-01-06
  • 打赏
  • 举报
回复
元编程就是利用模板的一个特性:模板类也好,模板函数也好,在编译期根据具体的模板参数展开。以实现某种逻辑 例如上边的代码,编译的时候看到了Pow3<7>根据具体参数就是7,计算了Pow3<6>....依次展开最后到Pow3<0>,Pow3<0>是个特化,他的result=1;最后依次返回算出Pow3<7>的result
真相重于对错 2020-01-06
  • 打赏
  • 举报
回复
如果你理解泛型,那么下面的代码就是元编程

template<int N>
class Pow3 {
public:
	enum { 
		result=3 * Pow3<N-1>::result };
};
template<>
class Pow3<0> {
public:
	enum { result = 1 };
};
int main()
{
	cout << Pow3<7>::result << endl;
}
自由技艺 2020-01-06
  • 打赏
  • 举报
回复
泛型编程好理解
真相重于对错 2020-01-06
  • 打赏
  • 举报
回复
这个问题有点儿大,建议看一下《c++ templates》。 简单说泛型其实就是模板编程。 元编程就是一种利用模板编程达到在编译期实现程序逻辑的一种方式

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧