设为首页 加入收藏

TOP

c++学习笔记——模板和IO(一)(二)
2023-07-23 13:39:14 】 浏览:272
Tags:习笔记
; endl; } }

第二种:重载操作符

点击查看代码
class Maker1
{
public:
	Maker1(string name, int age)
	{
		this->name = name;
		this->age = age;
	}
public:
	string name;
	int age;
};

bool operator>(Maker1& m1, Maker1& m2)
{
	if (m1.name > m2.name && m1.age > m2.age)
	{
		return true;
	}
	else
	{
		return false;
	}
}

void test()
{
	Maker1 a("aaa", 18);
	Maker1 b("bbb", 20);
	if (a > b)
	{
		cout << "a>b" << endl;
	}
	else
	{
		cout << "a<=b" << endl;
	}
}

定义类模板

点击查看代码
//类模板是把类中的数据类型参数化
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)
	{
		this->name = name;
		this->age = age;
	}
	void printMaker()
	{
		cout << "Name:" << this->name << "Age:" << this->age << endl;
	}
public:
	NameType name;
	AgeType age;
};

//类模板的使用
void test()
{
	//1.类模版不会自动推导数据类型,要显示的告诉编译器是什么类型
	Maker<string, int> m("高启强", 35);
	m.printMaker();

	//2.注意传入的参数,传入参数类型要程序员自己把握
	Maker<int, int>m2(18, 20);
	m2.printMaker();

	//Maker<>m3("aaa", 18);	//err:类模板“Maker"的参数太少,必须通过参数列表告诉编译器是什么类型

}

类模板和函数模板的区别

  1. 类模板不会自动推导数据类型,要显示的告诉编译器是什么类型
  2. 函数模板可以根据实参来推导数据类型

类模板的默认类型及其使用

点击查看代码
template<class NameType, class AgeType=int>
class Maker2
{
public:
	Maker2(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;
};

void test02()
{
	//如果有默认类型,那么<>里可以少写类型
	Maker2<string> m("高启强", 35);
	//Maker2<string, int> m("高启兰", 20);
	m.printMaker();
	//以传入的类型为准
	Maker2<string, double> m2("高启盛", 24.22);
	m2.printMaker();
}

//5、类模板的默认参数注意
//默认类型后面的泛型类型都必须有默认类型
template<class NameType, class AgeType = int, class T = int>
class Maker3
{
public:
	Maker3(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;
};

void test03()
{
	Maker3<string> m("高启强", 35);
	m.printMaker();
}

类模板做函数参数

点击查看代码
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;
};

//类模板做函数参数
	//1.指定传入的数据类型
void func(Maker<string, int&g
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇阅读openfoam框图 下一篇树状数组笔记整理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目