社区
C++ 语言
帖子详情
模板可以完全替代宏么?
gemo
2010-01-08 03:48:51
下面这个宏可以写成一个模板函数么
#define FN_(TYPE_)\
{ BaseClass* pBase = new TYPE_();}
...全文
229
11
打赏
收藏
模板可以完全替代宏么?
下面这个宏可以写成一个模板函数么 #define FN_(TYPE_)\ { BaseClass* pBase = new TYPE_();}
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yshuise
2010-01-08
打赏
举报
回复
宏还有有那种脱离传统的理解方式。比如那个什么两个数乘之类的等等。
yshuise
2010-01-08
打赏
举报
回复
宏的优点比如可以防止代码重复,效率等等
确点是不能调试,读代码是静态,没有类型安全。c++是强类型语言,这样可以防止一些错误。
但是宏不具备此项优点,也就是很容易出错。
如果想考验一下自己处理宏的能力可以看看“boost 的预处理器”。
yshuise
2010-01-08
打赏
举报
回复
[Quote=引用 8 楼 wangchentangjuan 的回复:]
如果一个要调用几百W次的宏耗费是0MS的时候你换成模板类需要70MS左右 效率问题
[/Quote]
宏只是简单的替换。这一特性表明它能做一些事情和不能做一些事情。
wangchentangjuan
2010-01-08
打赏
举报
回复
如果一个要调用几百W次的宏耗费是0MS的时候你换成模板类需要70MS左右 效率问题
yshuise
2010-01-08
打赏
举报
回复
[Quote=引用 5 楼 yuanlin2008 的回复:]
应该说不能
虽然这两个功能面向的都是代码编译期生成,但是define由于没有语法检测,会更灵活一些.
[/Quote]
外行说的话:
我有两条腿加两只手,如果没有手,会更方便些。
fox000002
2010-01-08
打赏
举报
回复
一般来说,两者各有分工,不能互相取代
两者结合的用法见得挺多
yuanlin2008
2010-01-08
打赏
举报
回复
应该说不能
虽然这两个功能面向的都是代码编译期生成,但是define由于没有语法检测,会更灵活一些.
yshuise
2010-01-08
打赏
举报
回复
宏没类型安全。
macrojj
2010-01-08
打赏
举报
回复
模版可以是模版类,模版函数。
但是宏可以做更多的。
macrojj
2010-01-08
打赏
举报
回复
当然可以了。不过你的pBase 要传出去哇
template <class T>
BaseClass* create()
{
return new T;
}
你要确定T是BaseClass的派生类哦
taodm
2010-01-08
打赏
举报
回复
模板不可以完全替代宏。
你所列代码,属模板最基本应用,望自己找本教材认真打老基础。
laravel 5 实现
模板
主题功能(续)
在之前一篇文章中我介绍了通过定义Response宏的方式来实现动态改变
模板
文件路径以实现主题功能: laravel实现
模板
主题功能,但后来我发现这种方法有个弊端,在
模板
中使用@extends必须显式指定
模板
路径,这可能造成混乱,我决定还是改变思想,主题和主题之间应该是
完全
隔离的,不存在就是不存在,不要自动去另外的主题中寻找替代的
模板
。 而原来定义response宏的方式可以实现,但我决定使用更加规范的方法。 laravel的View类里有一个方法 View::addNamespace ,这个方法在手册”开发扩展包”一节中有提到,不得不说Laravel手册排版逻辑混乱,这个方法说明应当放在”视图
C++
模板
的实现本质类似于宏替换
最近看C++
模板
看得头疼,C++就是复杂啊。正因为强大,功能多,才会复杂。一个类
模板
的继承问题我搞了半天才明白。最后发现一点:C++
模板
的实现本质类似于宏替换!记住这点后,便豁然开朗,接下来看
模板
内容,有如神助。 我们来看这段代码,我们定义个函数
模板
: template void Swap(Type &T1,Type &T2) { Type temp = T1; T1 = T2; T2
基于JPressOper快速开发JPress
模板
JPressOper是一款JPress生态的
模板
开发插件,也是JPress首款
模板
开发插件,思想独特,功能强大,简约灵活,直击痛点,能够大大提高
模板
开发效率,以此助力JPress生态繁荣。本课程将会带领大家学习一套全新的JPress
模板
开发方式:基于JPressOper进行JPress
模板
开发,此种方式将大大提高JPress
模板
开发的效率,课程还涉及很多JPress
模板
开发常用技巧,希望对各位JPress生态的同学有所帮助。
C++替代宏的功能实现的方法
在C++中,对于替代宏的功能实现,我们通常见到的有三种方法: 1.常量用const来替代实现 类似于#define A 10,是在程序的预编译期将所有的A用常量10替换掉,如果我们不想使用宏,就可以用const int A=10替换之前的用法,这一步将会在程序编译过程中将所有的A置为常量10,以此达到我们想要的目的。 2.有参宏函数用inline(内联函数)来替换实现 宏其实是在预编译时期进行了代...
python可以替代office吗_哪些办公软件可以完美替代 Microsoft Office?
没有完美,两个软件的竞争关系现在已经发生了微妙的变化。你反过来说,Office就能完美替代WPS了么?跨平台体验最完美的办公软件就是wps,云盘的使用逻辑也比onedrive容易理解。能不能完美替代只有你用过才能知道。宏和公式两家不能完美通用的问题注定你要和同事用相同的软件,处理大文件只能用office。但是大多数轻办公用户其实是感受不到差别的。根据经验大多数人对word的认知就是高配写字板主要给...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章