首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在函数中定义结构有什么“惩罚”吗?

在函数中定义结构有什么“惩罚”吗?
EN

Stack Overflow用户
提问于 2012-06-11 20:19:34
回答 4查看 16.5K关注 0票数 28

只是出于好奇..。

正如标题所说:在函数中定义结构有什么“惩罚”吗?(如性能、内存、糟糕的编程实践等)

附注:我知道,在函数中定义(非模板)函数是一种常见的做法,但仍然..)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-11 20:24:29

在C++11中,没有--没有惩罚。我甚至认为这是一种非常好的风格,不用你的实现细节污染任何“更明显”的作用域,当然,除非你想在其他地方重用这个函数器。然而,lambdas本质上是这种思想的一种压缩形式,如果您只是将结构用作函数器,那么通常应该是的首选。对于所有类型的数据,它都是完美的,尽管它通常在这方面与std::pairstd::tuple竞争。

在C++03中,您不能将这样的结构用作模板参数,因为这些参数需要有外部链接(不过,Visual Studio无论如何都允许您这样做)。将这样的结构与多态接口一起使用仍然很有用。

票数 21
EN

Stack Overflow用户

发布于 2012-06-11 20:21:58

由于这纯粹是一个可见性问题,我无法想象会有性能或内存损失的合理方案。

票数 5
EN

Stack Overflow用户

发布于 2012-06-11 20:24:32

如果你使用的是C++03,那么从技术上讲,你不能使用本地定义的结构作为模板参数,但一些编译器(即MSVC)允许这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10979984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档