设为首页 加入收藏

TOP

c++学习笔记——模板和IO(一)(四)
2023-07-23 13:39:14 】 浏览:270
Tags:习笔记
t;& m) { m.printMaker(); } //2.参数模版化(常用) template<class T1, class T2> void func2(Maker<T1, T2>& m) { m.printMaker(); } //3.整个类 模版化 template<class T> void func3(T& m) { m.printMaker(); }

类模板的继承

点击查看代码
//1、普通类继承类模板
template<class T>
class Father
{
public:
	Father()
	{
		m = 20;
	}
public:
	T m;
};

//普通类 继承 类模板
class Son : public Father<int>	//2、要告诉编译器父类的泛型数据类型具体是什么类型
{
public:

};

//2、类模板 继承 类模板
//类模板 继承 类模板
template<class T1,class T2>
class Son2 :public Father<T2>	//要告诉编译器父类的泛型数据类型具体是什么类型
{

};

类模板的成员函数的类内实现

点击查看代码
template<class NameType,class AgeType>
class Maker
{
public:
	Maker(NameType name, AgeType age)
	{
		this->name = name;
		this->age = age;
	}

	void printMaker()
	{
		cout << "Name:" << this->name << " " << "Age:" << this->age << endl;
	}
public:
	NameType name;
	AgeType age;
};

类模板的成员函数类外实现

点击查看代码
template<class NameType,class AgeType>
class Maker
{
public:
	Maker(NameType name, AgeType age);

	void printMaker();
public:
	NameType name;
	AgeType age;
};

//类模板的成员函数类外实现
//成员函数必须写成函数模板,并且写上参数列表
template<class NameType,class AgeType>
Maker<NameType,AgeType>::Maker(NameType name, AgeType age)
{
	cout << "构造函数" << endl;
	this->name = name;
	this->age = age;
}

template<class NameType,class AgeType>
void Maker<NameType, AgeType>::printMaker()
{
	cout << "Name:" << this->name << " " << "Age:" << this->age << endl;
}

类模板的友元实现

类内实现

点击查看代码
template<class NameType,class AgeType>
class Maker
{
	friend void printMaker(Maker<NameType, AgeType>& p)
	{
		cout << "类内实现" <<" "<< p.name << " " << p.age << endl;
	}
public:
	Maker(NameType name, AgeType age)
	{
		this->name = name;
		this->age = age;
	}
private:
	NameType name;
	AgeType age;

};

类外实现

点击查看代码
//1、声明模板
template<class NameType,class AgeType>
class Maker2;
//2、声明函数模板
//告诉编译器下面有printMaker2的实现
template<class NameType,class AgeType>
void printMaker2(Maker2<NameType, AgeType>& p);

template<class NameType, class AgeType>
class Maker2
{
	//3、在函数名和()之间加上<>
	friend void printMaker2<>(Maker2<NameType, AgeType>& p);
	//编译器不知道printMaker2下面有没有实现,需要知道函数的结构
public:
	Maker2(NameType name, AgeType age)
	{
		this->name = name;
		this->age = age;
	}
private:
	NameType name;
	AgeType age;
};
//友元在类外实现要写成函数模板
template<class NameType,class AgeType>
void printMaker2(Maker2<NameType, AgeType>& p)
{
	cout << "类外实现的友元函数" << " "<<p.name << " " << p.age << endl;
}

类模板实现数组

MyArray.hpp

点击查看代码
#pragma once

template<class T>
class MyArray
{
public:
	MyArray(int capacity)
	{
		this->mCapacity = capacity;
		this->mSize = 0;
		//T如果是Maker,这里要调用什么构造函数,要调用无参构造
		p = new T[this->mCapacity];
	}
	//拷贝构造
	MyArray(const MyArray &arr)
	{
		this->mCapacity = arr.mCapacity;
		thi
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇阅读openfoam框图 下一篇树状数组笔记整理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目