2601C++,概念与约束及推导本

cpp 复制代码
元<类 T>概念 有个吉=要求(T&t){
    t.g();
};

元<类 T>构 E{
    空 f(){
        静断(有个吉<T>);//静断.在此约束.
        打印("A::f");
        静转<T>(*本).g();
    }
};//不能在E处限制,因为没有生成.

构 B:公 E<B>{
    空 g(){
        打印("B::g");
    }
};

构 C:公 E<B>{
    空 g(){
        打印("C::g");
    }
};
构 D:公 E<D>{
    空 g(){
        打印("D::g");
    }
};

空 主(){
    B b;C c;D d;
    b.f();//正常的
    c.f();//调用的是B的!!
    d.f();//正常的.
}

通过上面,可以定制各种类型的插件.

//这才是真正的插件,可以定制的专门继承的

cpp 复制代码
元<类 T>构 E{
    空 f(){
        静断(有个吉<T>);//静断.在此约束.
        打印("A::f");
        静转<T>(*本).g();
    }
};//不能在E处限制,因为没有生成.

这里,不能把有个吉放在类模板的参数中.否则,无法构建,因此,放在f()里面.

上面,是用概念来约束的.下面用推导本约束.

cpp 复制代码
元<类 T>构 E{
    空 f(本 T&a){
        打印("A::f");
        a.动作();
    }
    空 动作(本 T&a){
        a.g();//全是返回a的
    }//
};

构 B:公 E<B>{
    空 g(){
        打印("B::g");
    }
};

构 C:公 E<C>{
    空 g(){
        打印("C::g");
    }
};

空 主(){
    B b;C c;
    b.f();
    c.f();
}

元<类 T>构 E专门负责实现大框架,然后搞出定制点,而B,C负责实现定制点!.

而且,这里B,C的继承都必须是自己类,不能是别的类!这里只能E<自己>,不像上面可以E<别人>!

相关推荐
吃着火锅x唱着歌1 小时前
Effective C++ 学习笔记 条款37 绝不重新定义继承而来的缺省参数值
c++·笔记·学习
2401_841495641 小时前
【数据结构】B+树
数据结构·数据库·c++·b+树·概念·结构·操作原理
小保CPP1 小时前
OCR C++ Tesseract按行识别字符
c++·人工智能·ocr·模式识别·光学字符识别
阿米亚波2 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
皓月斯语3 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
初願致夕霞4 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
脱胎换骨-军哥4 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
脱胎换骨-军哥5 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++
_wyt0015 小时前
01背包问题详解
c++·背包dp
方便面不加香菜5 小时前
C++ 模板进阶
开发语言·c++