首页 > 编程语言 > 详细

C++简单模板元编程

时间:2014-04-08 21:43:02      阅读:557      评论:0      收藏:0      [点我收藏+]

今天想用模板元编程,网上搜了下,很多用boost::mpl实现,我自己写了个简单测试了下:

#include <iostream>
using namespace std;

template <int N = 0>
struct Test
{
	Test():num(N){

	}
	int num;
	int arr[N];

	void GetNum()
	{
		printf("%d\n", num);
	}
};

int main()
{
	Test<55> test;
	test.GetNum();
}

模板元的优点就是在编译期把事情给确定了,但是缺点是“确定性”,运行期的好处就是“不确定性”,比如模板元编程不能这样

int main()
{
	int num = 0;
	cin >> num;
	
	Test<num> test;
	test.GetNum();
}

但是我们如果修改代码后:

#include <iostream>
using namespace std;

//template <int N = 0>
struct Test
{
	Test(int N):num(N){
		arr = new int[N];
	}
	~Test(){
		delete []arr;
	}
	int num;
	int *arr;

	void GetNum()
	{
		printf("%d\n", num);
	}
};

int main()
{
	int num = 0;
	cin >> num;
	
	Test test(num);
	test.GetNum();
}

副作用是我们要把本来栈上分配的数组要变成堆上动态分配,而且还要记得析构时释放内存。

C++简单模板元编程,布布扣,bubuko.com

C++简单模板元编程

原文:http://blog.csdn.net/boyxiaolong/article/details/23198233

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!