IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++笔记 模板 类模板与友元 -> 正文阅读

[C++知识库]c++笔记 模板 类模板与友元

//当类模板碰到继承时,需要注意以下:
//1.当子类继承的父类是一个类模板是,子类在声明的时候,要指定出父类中T的类型
//2.如果不指定,编译器无法给子类分配内存
//3.如果想灵活指出父类中T的类型,子类也需要变成类模板
#include<iostream>
using namespace std;
template<class T>
class Base {
public:
	T m;
};
//如果子类继承父类时,未给父类m模板T一个确定类型时,会产生如下错误:
//报错:E0441:缺少类模板"Base"的参数列表
//错误原因:T未知,无法给Son分配合适的内存空间 即无法确定sizeof(Son)的内存
//class Son :public Base {
//
//};
class Son1 :public Base<int> {

};
void test01() {
	Son1 s1;
}
//如果想灵活指定父类中T的类型,子类也需要变模板
template<class T1,class T2>
class Son2 :public Base<T2> 
{public:
	Son2() {
		cout << "T1的类型为: " << typeid(T1).name() << endl;
		cout << "T2的类型为: " << typeid(T2).name() << endl;
		//此时,T已经被T2替换了,故产生错误C3861和C2065
		//cout << "T的类型为: " << typeid(T).name() << endl;
	}
	T1 obj;
};
void test02() {
	//此时,T1为int,T2和父类的T为char
	Son2<int,char> s2;
}
int main() {
	test01();
	test02();
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:40:26  更:2021-10-07 13:42:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 1:52:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码