模板的继承

会用继承,会用一些模板,

但是模板的继承是什么鬼;

百度如下:

模板类的继承包括四种:

1.(普通类继承模板类)

template<class T>
class TBase{
    T data;
……
};
class Derived:public TBase<int>{
……
};

2.(模板类继承了普通类(非常常见))

class TBase{
……
};
template<class T>
class TDerived:public TBase{
T data;
……
};

3.(类模板继承类模板)

template<class T>
class TBase{
T data1;
……
};
template<class T1,class T2>
class TDerived:public TBase<T1>{
T2 data2;
……
};

4.(模板类继承类模板,即继承模板参数给出的基类)

#include<iostream>
using namespace std;

class BaseA{
public:
    BaseA(){cout<<"BaseA founed"<<endl;}
};
class BaseB{
public:
    BaseB(){cout<<"BaseB founed"<<endl;}
};
template<typename T, int rows>
class BaseC{
private:
    T data;
public:
    BaseC():data(rows){
        cout<<"BaseC founed "<< data << endl;}
};
template<class T>
class Derived:public T{
public:
    Derived():T(){cout<<"Derived founed"<<endl;}
};

void main()
{
    Derived<BaseA> x;// BaseA作为基类
    Derived<BaseB> y;// BaseB作为基类
    Derived<BaseC<int, 3> > z; // BaseC<int,3>作为基类
}
时间: 2024-12-09 02:09:34

模板的继承的相关文章

模板类继承模板类

今天写的代码提交到OJ上就出现这样的错误,但是vs并不会出错. '_elem' was not declared in this scope 原因在于模板类继承模板类,子类看不见父类的成员. 但是VC++做了一些小拓展,可以不适用this->就调用父类成员. gcc在扫描到模板类时就要求确定每一个成员在哪里声明的,VC++在类实例化之后再检测,就不会有这个问题. 可以使用以下方式解决: 方法1: 使用this template<typename T> class A { protecte

Template 模板的继承

index.html {% extends "base.html" %} {% block content %} <h1>Hi, {{user.nickname}}!</h1> {% for post in posts %} <div><p>{{post.author.nickname}} says: <b>{{post.body}}</b></p></div> {% endfor %} {

模板的继承和导入

模板的继承: 模板(名为master.html): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> <link rel="stylesheet" href="#"> .. &

python的Web框架,模板标签及模板的继承

模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html 1 from django.shortcuts import render 2 3 def index(request): 4 5 students = [ 6 {'id':12, 'name':'张三', 'age':19, 'sex':'男'} 7 {'id':22, 'name':'李思',

模板标签及模板的继承与引用

模板标签及模板的继承与引用 一.模板标签 定义:标签在渲染的过程中提供任意的逻辑 语法:由 {%    %} 来定义的 例:1.循环列表数据 2.如果要判断性别的女的,背影色为黄色,否则为红色 3.如果要加序号 4.如果电话号码为空时,显示未填 {% for student in students %} <tr  {% if student.sex == "女" %}style = "background-color : yellow "    {% else

web框架--tornado框架之模板引擎继承

使用模板的继承可以重复使用相同结构的模板, 可以大大减少代码量 入门实例 一.demo目录结构 注解: master.html为模板内容,被index.html,account.html引用 二.各文件代码 2.1.master.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Maste

django 模板的继承

django中模板继承操作: 模板继承 模板继承允许你建立一个基本的"骨架"模板, 它包含你所有最常用的站点元素 并 定义了一些可以被子模板覆盖的block. 这非常有用,例如各大门户网站左边一般有导航栏,在导航栏点击不同的区域时,只有中间<body>部分的内容更新了,而<body>标签之外的内容没有变.就像博客园一样 如何使用母模板和子模板? {% block title %}母模板的标题{% endblock %} {% block title %}子模板的

模板与继承之艺术——空基类优化

1.概念 C++中有“空”类的概念,这就意味着在运行期间其内部不好任何内存. 只包含类型的成员函数.非虚成员函数和静态数据成员的类为空类. 非静态的数据成员,虚函数和虚基类则在运行时期消耗存储空间. 2.空基类优化如下: #include<iostream> using namespace std; class Empty{ typedef int Int; }; class EmptyToo : public Empty {}; class EmptyThree : public Empty

模板与继承之艺术——命名模板参数

一.命名模板参数 许多模板技术拖着一长串的类型参数,不过很多参数都设有合理的缺省值. template<typename Policy1 = DefaultPolicy1, typename Policy2 = DefaultPolicy2, typename Policy3 = DefaultPolicy3, typename Policy4 = DefaultPolicy4> class BreadSlicer{}; 但是如果我们需要指定某个非缺省实参,还必须明确的指定在它之前的所有实参,