templates相关内容

模板和多态有什么区别

大家好,我对模板和多态性有疑问.根据定义,多态性提供代码可重用性,并且模板在某种意义上允许用户通过提供具有不同数据类型的通用编程来使用相同的代码.那么在模板上使用多态性有什么好处.这可能是一个愚蠢的问题,但我很想知道确切的区别. 解决方案 你好像误解了什么是多态性. 多态性的核心与派生类无关.多态性仅仅意味着在不知道所有类型的情况下使用类型的能力.多态性不是使用具体类型,而是依赖于某 ..
发布时间:2022-01-24 16:19:04 C/C++开发

静态多态对实现接口有意义吗?

祝大家圣诞快乐! 我正在学习静态多态性,并且正在阅读 Andrei Alexandrescu 关于基于策略的设计的优秀书籍.我在我的代码中遇到了以下内容:我有接口 Interface 指定方法 Foo 必须存在.该接口将由类 Impl 实现.我有以下两种选择: 1) 动态多态性 类接口{上市:虚空 Foo() = 0;}类Impl:公共接口{上市:无效 Foo() {};} 2) ..

测试一个类是否是多态的

我们有一个子项目“commonUtils",其中包含在整个父项目中使用的许多通用代码片段.我看到的这样一个有趣的东西是:- /******************************************************************************如果 T 是多态的,编译器需要计算 typeid运行时的东西,答案将是真实的.如果 T 是非多态的,编译器需要在编译 ..
发布时间:2022-01-24 16:09:07 C/C++开发

将模板与多态性混合

A 类{朋友 void foo();虚拟 void print_Var() const{};};//不包含变量 Var;模板B类:公共A{T 无功;上市:B(T x):Var(x){}void print_Var() 常量覆盖{std::coutVar//A 中没有名为 Var 的成员//显然基类不包含这样的变量//if (i->Var==20) {/* 做某事*/}//if (i->Va ..
发布时间:2022-01-24 15:59:41 C/C++开发

模板多态性

我有这种类结构. 类接口{//...};类Foo:公共接口{//...};模板类容器{//...}; 我还有其他一些 Bar 类的构造函数. Bar(const Container & bar){//...} 当我以这种方式调用构造函数时,我得到一个“没有匹配的函数";错误. 容器容器 ();酒吧 * 温度 = 新酒吧(容器); 怎么了?模板不是多态的吗? ..
发布时间:2022-01-24 15:49:12 C/C++开发

从右值参数推导出对 const 的引用

好吧,这似乎是一个愚蠢的问题,但它是这样的: 模板无效 foo(T&x){}主函数(){富(42);//传递 'void foo(T&) [with T = int]' 的参数 1 时出错} 是什么阻止了 C++ 用 T = const int 来实例化 foo 函数模板? 解决方案 问题是模板类型推导必须计算出精确匹配,而在这种特殊情况下,由于签名中的引用,精 ..
发布时间:2022-01-24 00:00:50 C/C++开发

C++:结合 const 与模板参数

以下示例在我手动替换 T wirh char * 时有效,但为什么不能按原样工作: 模板A类{上市:A(常量 T _t) { }};诠释主要(){const char * c = "asdf";一个一(三);} 使用 gcc 编译时,我收到此错误: test.cpp:在函数'int main()'中:test.cpp:10:错误:从 'const ch ..
发布时间:2022-01-23 23:59:53 C/C++开发

const 返回类型何时会干扰模板实例化?

来自 Herb Sutter 的 GotW #6 对于非内置返回类型,按值返回通常应该是 const.... 注意:Lakos(第 618 页)反对返回 const 值,并指出无论如何它对于内置程序都是多余的(例如,返回“const int"),他指出这可能干扰模板实例化. 虽然 Sutter 在使用 Lakos 按值返回非内置类型的对象时似乎不同意返回 const 值还是非常量 ..
发布时间:2022-01-23 23:48:26 C/C++开发

从成员函数类型中删除 const 的特征?

当 T 为 double(float)const 时,当我尝试使用 function 时出现此错误. 隐式实例化未定义模板'std::function' 但是当T为double(float)时就可以了.我尝试使用 std::remove_cv::type 来删除这个 const,但这不起作用.是的,我有 #include ..
发布时间:2022-01-23 23:45:29 C/C++开发

模板参数中的 const

这个模板中const关键字的作用是什么? 模板类矩阵 这是否意味着这个模板只接受一个 const 作为参数?如果是这样,有没有办法将变量作为 COLNUM 和 ROWNUM 传递? (当我尝试将变量作为模板的 COLNUM 传递时,它会给出错误:“IntelliSense:表达式必须具有常量值") ..
发布时间:2022-01-23 23:33:38 C/C++开发

lambda 表达式的可变参数模板

使用 g++ 的正确方法是什么: 模板 空隙 g (F f);模板 解决方案 我想你也需要在捕获列表中展开pack a,像这样: 模板 无效 f (A ... a) {g ([&, a...] () { h (a...); });} 这是来自 C++0x 最终委员会草案,第 5.1.2.23 节的相关文本: 捕获后跟省略号是包扩展(14.5. ..
发布时间:2022-01-23 21:13:16 C/C++开发

C++ 函数模板特化的可见性

假设我有 fileA.h,它使用模板函数 SomeFunc() 声明了一个类 classA.该函数直接在头文件中实现(与模板函数一样).现在我在 fileA.C (即不在头文件). 如果我现在从其他代码(可能也来自其他库)调用 SomeFunc(),它会调用通用版本还是专业化版本? 我现在有这个问题,类和函数存在于一个库中,由两个应用程序使用.一个应用程序正确地使用了专 ..
发布时间:2022-01-23 21:08:35 服务器开发

在使用 g++ 创建的共享库中隐藏实例化模板

我有一个包含以下内容的文件: #include A类{};无效 doSomething() {std::map米;} 当使用 g++ 编译成共享库时,该库包含 std::map 的所有方法的动态符号.由于 A 对该文件是私有的,因此 std::map 不可能在具有相同参数的任何其他共享库中实例化,所以我想隐藏模板实例化(出于本文档中描述的一些原因).p> 我认为我应 ..
发布时间:2022-01-23 20:51:52 C/C++开发

g++模板参数错误

我有如下 GetContainer() 函数. 模板集装箱&ObjCollection::GetContainer(){返回 mContainer;} 当我如下使用这个方法时 模板夯;DynamicObjCollection::Insert(T&t){GetContainer().insert(&t);返回 t;} 我遇到了错误. 错误:‘GetContainer’没有依赖于模 ..
发布时间:2022-01-23 20:47:35 C/C++开发