1,很多编译器都要求模板的定义和实现都在头文件中,这是因为必须先为他提供某个实现品,然后才能调用,也只有如此才能通过编译。目前唯一能让“template的运用”具有可移植性的方式,就是在头文件中以inline function实现temlate function。
2,下面typename指出SubType是T中定义的一个型别,若不用这个关键字,则编译器会认为是两个数相乘,而不是定义的指针。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->classclassA
{
public:
typedefintSubType;
};
template<typenameT>
classMyClass
{
typenameT::SubType*ptr;
};
intmain()
{
MyClass<classA>c1;
return0;
}
3,类成员函数可以是模板函数,但这样的成员模板函数不能是虚拟的,也不能有缺省参数。下面这个例子中assign函数中,由于参数x和*this类型不同,不能直接存取private成员,而必须通过公有方法getValue访问。模板构造函数用于在复制对象时实现隐式类型转换,但它并不会屏蔽隐式拷贝构造函数,只要类型完全吻合,隐式拷贝构造函数就会被产生出来并被调用。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->template<typenameT>
classMyClass
{
private:
Tvalue;
public:
MyClass()
{
value=T();
}
MyClass(Tval)
{
value=val;
}
template<typenameX>
MyClass(constMyClass<X>&x)
{
assign(x);
}
template<typenameX>
assign(constMyClass<X>&x)
{
value=x.getValue();
}
TgetValue()
{
returnvalue;
}
};
intmain()
{
MyClass<int>c1(10);
MyClass<int>c2(c1);//callsbuilt-incopyctor
MyClass<double>c3(c1);//templatector
cout<<c2.getValue()<<endl;
return0;
}
(为什么这段代码在vc6下编译通过,但在vs2005下无法编译通过?)
4, dynamic_cast将多态类型向下转换为其实际静态类型,若转换失败则会丢出一个bad_cast异常。const_cast设定或去除类型的常熟性,也可以用来去除volatile,这些操作法只接受一个参数。
5,从标准异常类别中派生新类别
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->classMyException:publicexception
{
public:
MyException(char*msg):exception(msg)
{
}
virtualconstchar*what()constthrow()
{
returnexception::what();
}
};
voidfun()
{
throwMyException("erroroccour");
}
intmain()
{
try
{
fun();
}
catch(constMyException&exp)
{
cout<<"justatest"<<endl;
}
return0;
}
6,auto_ptr不允许使用一般指针惯用的赋值初始化方式,必须使用数值来完成初始化:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->auto_ptr<classA>ptr(newclassA);
auto_ptr<classA>ptr2;
ptr2=auto_ptr<classA>(newclassA);
分享到:
相关推荐
C++Primer中文第三版(C++从入门到精通)第一章的读书笔记,主要是C++程序、预处理器指示符、iostream库等的基础知识点读书笔记。
本源代码既有多线程的使用,VC的各种控件的使用,以及动态连接库,ActiveX控件,网络编程,数据库编程,以及最后的一个整体大程序,KTV点歌系统等等
Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。 Boost由C++标准委员会部分成员所设立的Boost社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串...
动态连接库的使用和创建方法,ActiveX控件的创建和使用,网络编程的基本知识和基本步骤,数据库开发的常用基本技术等等,而且最后还安排了一章大型案例系统来整体介绍Visual C++的应用,使读者能够学以致用,加深对 ...
它是一种将程序库名称封装起来的方法,它提高了程序的性能和可靠性。 4.动态内存分配的一般格式为: 指针名 = new 结构名; delete 指针名; 5.引用的声明格式为: 数据类型 & 别名 = 对象名; 6.引用通常用于函数的...
该复习文档是本人根据谭浩强老师的《C++程序设计》、邓俊辉的《数据结构(C++语言版)》和CSDN博客上的众多文章总结而成的。感谢博客上各位大佬的总结,使我在复习课本的同时补充了很多其他方面的关键知识,如C++...
NULL 博文链接:https://hyjiang1989.iteye.com/blog/1821527
Windows编程 C++ DLL编程 学习笔记(一)静态链接库的创建和使用 本文件中只有程序,不含笔记和注释,笔记和注释请到空间察看http://giddyandyang.spaces.live.com/
Windows编程 C++ DLL编程 学习笔记 (二)动态链接库的创建 动态调用 静态调用 本文件中只有程序,不含笔记和注释,笔记和注释请到空间察看http://giddyandyang.spaces.live.com/
学习韦东山老师的4412开发板视频,做了点笔记,发出来跟大家分享一下这个学习的过程,如发现说的有误的地方,还请指出,谢谢!
【Visual C++】游戏开发笔记之【浅墨DirectX提高班】系列博文 配套详细注释源码之五 源码配套博文 《【Visual C++】游戏开发笔记三十七 浅墨DirectX提高班之五 顶点缓存的红颜知己:索引缓存的故事 》 ,文章地址...
【Visual C++】游戏开发笔记之【浅墨DirectX提高班】系列博文 配套详细注释源码之十 源码配套博文 《【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场》 ,文章地址为...
qss 样式表,本程序所有窗体、控件的样式都由qss设计 signal\slot 控件、窗体间通信,事件处理 QThread 异步处理 iconfont 阿里巴巴矢量图标库,主要用于按钮及标签上图标等显示 sqlite 存储数据库
源码的配套博文是 《【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场》 ,文章地址为http://blog.csdn.net/zhmxy555/article/details/8632184, 点击Release下的exe文件可以直接...
源码的配套博文是 《【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界:摄像机的实现》 ,文章地址为http://blog.csdn.net/zhmxy555/article/details/8657656, 点击Debug下的exe文件可以...
源码的配套博文是 《【Visual C++】游戏开发笔记四十八 浅墨DirectX教程十六 三维地形系统的实现》 ,文章地址为http://blog.csdn.net/zhmxy555/article/details/8685546, 点击Release文件夹下的exe文件可以直接...
该项目以Linux内核为核心,围绕其构建了一个完整的操作系统,包括各种系统工具、库、应用程序和硬件支持。 以下是Linux项目的一些主要特点和资料介绍: 开放源代码:Linux项目的所有源代码都是公开的,并允许任何...
很多人觉得它应该像C或者C++,但事实上它更像是java的一个clone,所以作为入门,读一下清华大学出版社出版的《Java 语言与面向对象程序设计》可能会对你有所帮助。本文假定你具备一切学习此语言所需的知识,没有也不...
VNote 是一个受 Vim 启发的开源笔记记录实用程序,还具有 Markdown 编辑功能。当然,您可以像具有便笺管理功能的可高度配置的 Markdown 编辑器一样轻松地查看它,它不会让人失望。 开源免费 Markdown 笔记工具 ...
对于 Python,想必很多朋友还未曾听说,其定义我已在本笔记的第一章给出,这 里我想谈谈我对 Python 的个人理解。在我学习 Python 的过程中,有朋友问我,Python 到底是什么,它主要应用于什么方面,能做什么东西,...