【C++精简版回顾】20.模板的使用

1.模板起源

1.模板的定义

1.针对函数属性模板

//针对函数属性
template <class VOID >
VOID print1(int a) {
	cout << a << endl;
}

2.针对数据属性模板

//针对数据属性
template <typename INT,typename FLOAT>
void print2(INT a,FLOAT b) {
	cout << a << b << endl;
}

3.main

int main() {
	print1<void>(1);
	print2<int,float>(2,3.3);
}

结果:

2.模板与重载的结合

1.class MM

class MM {
public:
	MM() {}
	MM(int age,string name):age(age),name(name) {}
	int getAge() {
		return age;
	}
	string getName() {
		return name;
	}
private:
	int age;
	string name;
};

2.模板与流重载的匹配

template<class XX>
void print(XX a) {
	cout << a << endl;
}
ostream& operator<<(ostream& out,MM mm) {
	out << mm.getAge() << mm.getName() << endl;
	return out;
}

3.main

int main() {
	MM mm[3] = { {12,"女生"},{18,"女神"},{23,"女汉子"} };
	cout << mm[0] << mm[1] << mm[2] << endl;
	return 0;
}

结果:

补充:我们可以对流重载使用友元函数,解决无法访问内部类的问题

1.class MM

class MM {
	//友元类
	friend ostream& operator<<(ostream& out, MM mm);
private:
public:
	MM() {}
	MM(int age,string name):age(age),name(name) {}
	int age;
	string name;
};

2.模板与流重载

template<class XX>
void print(XX a) {
	cout << a << endl;
}
ostream& operator<<(ostream& out,MM mm) {
	out << mm.age << mm.name << endl;
	return out;
}

3.main

int main() {
	MM mm[3] = { {12,"女生"},{18,"女神"},{23,"女汉子"} };
	cout << mm[0] << mm[1] << mm[2] << endl;
	return 0;
}

结果:

3.模板类

继承模板类后,成员函数与子类都需要加模板申明,麻烦很少用

相关推荐

  1. 《More Effective C++》- 极精简 21-30条

    2024-03-12 04:56:04       22 阅读
  2. c++】模板使用

    2024-03-12 04:56:04       27 阅读
  3. Django大回顾 - 9 Auth模块使用、缓存

    2024-03-12 04:56:04       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-12 04:56:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-12 04:56:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-12 04:56:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-12 04:56:04       20 阅读

热门阅读

  1. springboot参数传递总结

    2024-03-12 04:56:04       16 阅读
  2. json 基本上面试题目比较常问

    2024-03-12 04:56:04       22 阅读
  3. 大数据笔记

    2024-03-12 04:56:04       17 阅读
  4. C 语言中 #define 预处理器指令

    2024-03-12 04:56:04       20 阅读
  5. oracle 19c数据库联机备份与恢复

    2024-03-12 04:56:04       22 阅读
  6. 一些使用 Golang 实现的反沙箱技术 - Anti-Sandbox-Go

    2024-03-12 04:56:04       18 阅读
  7. OpenCV-环境搭建及基本IO接口

    2024-03-12 04:56:04       17 阅读
  8. 96.Go设计优雅的错误处理(带堆栈信息)

    2024-03-12 04:56:04       20 阅读
  9. Vue 双向数据绑定

    2024-03-12 04:56:04       19 阅读