我是靠谱客的博主 甜美战斗机,最近开发中收集的这篇文章主要介绍【C++标准程序库】第二章,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

template< class T, class container = vector<t> >

class MyClass;
MyClass<int> x1; // 相当于MyClass< int, vector<int> >

template<class T>
class MyClass
{
typename T::SubType * ptr;
...
};

如果没有typename, SubType会被当成是一个static成员,于是T::SubType * ptr是两数乘积

SubType成员一个型别的条件:任何一个用来取代T的型别,其内都必须提供一个内部型别SubType的定义。

【例子】

MyClass<Q> x;
Class Q{
typedef int SubType;	// 必须带有SubType型别
};
或者

class Q{
class SubType;
...
};
【成员模板】

class MyClass{
...
template<class T>
void f(T);
};
适用于任何型别参数

template<class T>
class MyClass{
private:
T value;
public:
void assign(const MyClass<T>& x){
value = x.value;	// 这里是因为*this和MyClass<T>也就是参数的类型一模一样,所以可以直接访问private数据
}
...
};
注意:assign里面的型别必须和声明对象中的型别一模一样!

int i1;
int i2 = int(); // 初始化为0,显式初始化
用在模板上:

template <class T>
void f()
{
	T x = T();
	...
}
【异常处理】

【命名空间】

与class不同的是namespaces是开放

【杂项】
explicit禁止用于自动型别转换。也就是禁止隐式转换。

【C++型别转换操作符】

static_cast、dynamic_cast、const_cast、renterpret_cast

最后

以上就是甜美战斗机为你收集整理的【C++标准程序库】第二章的全部内容,希望文章能够帮你解决【C++标准程序库】第二章所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部