博客园之新的开始
再过几个月就要成为职业的C++开发工程师了,打算做一个IM系统。说它是系统是因为涉及到客户端和服务器端的开发,即windows和linux。主要功能自然是包括即时通讯,语音传输,视频直播。便于了解主营业务的瓶颈和改进点,以更快地融入职业环境。可能会耗费时日的地方主要是MFC和UDP打洞技术。当然,如果视频服务器不给力的话,可能也要费些时日。应该会多花些心思在代码优化上,所以,算法得补啊。
从百度上拿到点C++关于模板和东西,记在下面作为个人足迹:
在C++语言中模板类的定义格式如下:
template < class T>
class MyTemp
{
MyTemp<T>( ){ };
~MyTemp<T>( ) { };
int MyFunc( int a) ;
}
Int MyTemp<T>::MyFunc( int a)
{
}
首先使用C++的关键字“template”来声明一个模板类的定义。在关键字后面是用尖括号括起来的类型参数。正是根据这个类型参数,编译器才能在编译过程中将模板类的具体定义转化为一个实际的类的定义,即生成一个新的类。接下来的定义方式与普通的类定义十分相似,只是在类的函数定义中都要带有类型参数的说明。
下面的程序段说明了模板类的用法:
typedef MyTemp<MyClass> myclassfromtemp;
myclassfromtemp m;
int a = m.Myfunc(10);
通常在使用模板类时为了方便起见,使用一个关键字“typedef”为新定义出来的类取一个名字。在上面的程序段中假设“MyClass”是一个由用户定义的类,通过将这个类的名字作为类型参数传递给模板类,我们可以创建一个新的类,这个类的行为将以模板类的定义为基础,例如它具有模板类定义的所有成员函数,同时这个类又是对模板类行为的一种修改,这种修改是通过用户提供的类型参数来实现的。赋予模板类以不同的类型参数,则得到行为框架相似但具体行为不同的一组类的集合。有了新的类的定义以后,我们可以象使用普通类一样来创建一个类的实例,即一个新的对象,并且调用这个对象的成员函数。
模板类是对标准C++语言的最新扩展,虽然它的功能很强大,但是要想使用好模板类需要相当多的关于语言和编程的经验和知识,而且错误地使用模板类又会对程序的结构和运行效率带来大的副作用,因此一般的编程环境和编程书籍对模板类的使用都采取谨慎的态度。而ATL的核心就是由几十个模板类构成的,通过研究ATL的源代码可以使我们对模板类的使用有比较深刻全面的认识。