当前位置: 首页 > wzjs >正文

网站开发程序员是做什么的益保网做推广网站吗?

网站开发程序员是做什么的,益保网做推广网站吗?,辽宁省建设工程信息网上不去,哪里可以找到做网站的目录 0.前言 1.类模板基本使用 2.类模板继承 2.1类模板继承过程中的模板参数 情况1:父类非模板,子类为模板 情况2:父类模板,子类为非模板 情况3:父类模板,子类为模板 3.STL中的模板类分析 3.1STL中…

目录

0.前言

1.类模板基本使用

2.类模板继承

2.1类模板继承过程中的模板参数

情况1:父类非模板,子类为模板

情况2:父类模板,子类为非模板

情况3:父类模板,子类为模板

3.STL中的模板类分析

3.1STL中list继承关系

3.2STL中vector继承关系

后续补充


0.前言

本篇将整理类模板部分知识点。因为相关知识点可能较多,所以后面会将相关内容不断补充到这篇文章中。

1.类模板基本使用

类模板基本使用是这样的:

// 类模板继承
#include<iostream>template <typename T>
class Base {
public:T data;Base(T val) : data(val) {}
};template <typename T>
class Derived : public Base<T> {
public:Derived(T val) : Base<T>(val) {}void print() {std::cout << "Derived data: " << this->data << std::endl;// std::cout << "Derived data: " << data << std::endl;}
};int main(void){Derived<int> d(42);d.print(); // 输出: Derived data: 42return 0;
}

此外,还有一个很阴间的用法,类模板模板参数,它的使用大概是下面这样的:

#include<vector>
template<typename T>
using vector = std::vector<T>;
template<typename T,template<typename U> class Con>
class Container {
public:Con<T> item;Container(T val) {item.push_back(val);std::cout << "Container initialized with value: " << val << std::endl;}void display() {for(auto & elem : item) {std::cout << elem << " ";}     }
};int main(void){Container<int, vector> c(100);c.display(); // 输出: Container holds: 100return 0;
}

2.类模板继承

2.1类模板继承过程中的模板参数

情况1:父类非模板,子类为模板

严格来说,不算类模板继承,但是也列举在这里。代码如下:

class Base {
public:int data;Base(int val) : data(val) {}
};template <typename T>
class Derived : public Base{
public:Derived(T val) : Base(val) {}void print() {std::cout << "Derived data: " << this->data << std::endl;// std::cout << "Derived data: " << data << std::endl;}
};
情况2:父类模板,子类为非模板

这种情况可能不严谨,但是从内存角度来说,它的意思是父类对应的内存由实例化确定,子类内存是确定的。

template <typename T>
class Derived : public Base<T>{
public:Derived(int val) : Base<T>(val) {}void print() {std::cout << "Derived data: " << this->data << std::endl;// std::cout << "Derived data: " << data << std::endl;}
};
情况3:父类模板,子类为模板

这种情况是比较典型的模板类继承,代码如下:

template <typename U,typename T>
class Derived : public Base<T>{
public:Derived(T val) : Base<T>(val) {}void print() {std::cout << "Derived data: " << this->data << std::endl;// std::cout << "Derived data: " << data << std::endl;}
};

3.STL中的模板类分析

3.1STL中list继承关系

下图为GCC 8.1.0的list的继承关系图,你知道它的大小吗?

如果对继承和包含不熟悉可以移步另一篇文章:

C++继承和包含知识及测试代码-CSDN博客

已知条件为:

(1)空心箭头表示继承(is-a),实心箭头表示包含(has-a);

(2)_List_node_base包含的两个元素是指针类型。

(3)_M_size为 unsigned long long类型

----------------------------------------------------------分割线--------------------------------------------------------------

其实list的大小和以下这个结构体是相等的。其中两个指针对应着链表(双向)节点的中的两个指针,另外一个对应链表的长度信息。在64bit编译器中,我输出的结果是24字节。

struct A{_List_node_base* a;_List_node_base* b;unsigned long long c;
};

更直观的,如果对vscode熟悉的话,可以看一下debug界面。如下图,是不是对list结构更清晰了一点呢?

3.2STL中vector继承关系

看完了list,看下常用的vector,它相对要简单一些,可以看出它的大小吗?

已知条件为:

_Vector_impl包含的三个元素都是指针类型。

----------------------------------------------------------分割线--------------------------------------------------------------

同样的,在64bit编译器中,我输出的结果是24字节。在vscode中,可以看到其内存布局如下图:

后续补充

此部分由于比较复杂,后续会继续补充!

http://www.dtcms.com/wzjs/554922.html

相关文章:

  • 临沂市建设局网站公示wordpress文档结构
  • 手机网站专题长沙专业个人做网站哪家好
  • 展示型网站建设的标准大型服装网站开发
  • 吴桥县做网站价格网站建设的方案
  • 网站主流服务器语言永久免费网站建设系统
  • 淘宝客api同步到网站中国网站访问量排行
  • 孝感网站建设孝感一台虚拟主机能建设几个网站
  • 网站源码怎么弄拓者设计吧免费注册
  • 免费销售网站模板下载安装智能建站cms管理系统
  • 开封网站建设网站维护的工作内容
  • 龙港网南昌优化网站推广
  • 个人网站企业备案区别网络推广引流方法
  • 知名网站开发企业北京旅游攻略
  • 网络电话聊天网站建设多少钱海口 网站制作公司
  • wap网站用什么服务器查询网站
  • hemi网站怎么做热图elementui 企业官网模板
  • 丹阳网站建设怎么样做网站 一年需要多少钱
  • 辽宁省建设工程招标协会网站wordpress做导航页面
  • 移动商城网站建设 深圳问答营销是基于什么的新型网络营销方式
  • 恭城网站建设在哪里可以看免费的资源
  • seo是什么seo怎么做烟台网站优化
  • 建设网站时 首先要解决两个问题 一是什么建小网站多少钱
  • 网站运营策划ppt顺口大气三个子公司名字
  • 建站如何赚钱深圳网站建设智能 乐云践新
  • 开发企业门户网站赣州做网站建设
  • 如何创建一个国外免费网站建筑资格证书查询官网
  • 阜阳企业做网站怎样做网站关键字
  • 12网站免费建站做网站白云区
  • 什么是网站域名?360建站的应用场景
  • 苏州官网建站html网站设计范例