正如我所理解的那样,可以使用"export"关键字,以便可以通过头文件公开模板类或函数签名,并在库文件中抽象实际实现.
任何人都可以提供一个实用的示例程序,说明如何做到这一点?
使用此功能时是否有任何缺点或重点?
编辑:基于答案的后续问题.正如答案中所提到的,'export'在C++ 0x中已被弃用,即使对于C++ 03x也很少得到编译器的支持.鉴于这种情况,可以用什么方式隐藏lib文件中的实际实现,只是通过头文件公开声明,以便最终用户可以知道暴露的API的签名是什么,但是无法访问实现相同的源代码?
我在采访中不断提出这个问题:
不使用main()函数编写程序?
我的一个朋友向我展示了一些使用宏的代码,但我无法理解它.
所以问题是:
是不是真的可以编写和编译程序main()?
我正在尝试插入新的RawContact联系人,但是RawContact当我通过"联系人"或电话簿查看联系人时,添加的内容无法显示.据我了解,如果我们创建了一个RawContact并且没有与之关联的联系人,那么将自动插入联系人.我得到一个有效的值,rawContactId并没有抛出异常,所以我假设插入成功.我做错了什么或者我错过了什么?我正在使用开发人员网站的代码示例,只需将其粘贴到此处:
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, accountType);
values.put(RawContacts.ACCOUNT_NAME, accountName);
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "Mike Sullivan");
getContentResolver().insert(Data.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud) 这是代码审查评论之一.
在为任何对象调用delete之前检查NULL是个好主意吗?
我确实理解删除运算符在内部检查NULL并且是多余的,但是提出的参数是删除,因为运算符可以重载,如果重载版本没有检查NULL,它可能会崩溃.因此,假设如果和何时删除将被重载,它是否安全合理,它将检查是否为NULL?在我的理解中,合理地假设第一种情况是重载删除应该处理NULL检查,并且审查点不成立.你怎么看?
可能重复:
你最喜欢的分析工具是什么(适用于C++)
是否有任何好的工具来分析混合了C和C++的源代码.有什么优点和缺点,你使用过哪些,并建议使用.请不要给我一个谷歌工具列表.我也可以这样做,我想要的是利用使用这些工具的人的个人经验并了解他们的利弊.
提前致谢.
我是一名c ++程序员,我期待学习和掌握OO设计.我已经做了很多搜索,而且我们都知道有很多关于如何实现良好的OO设计的材料,书籍,教程等.当然,我确实理解一个好的设计只能带来大量的经验,个人才能,才华横溢,或者事实上甚至只是运气(夸张!).
但是肯定这一切都始于一个坚实的开端和建立一些强大的基础.可以通过指出正确的材料来帮助我,如何从识别对象,类等到舞台的阶段开始学习设计的任务使用设计模式.说我是程序员,但我没有设计经验.可以请你帮我从程序员到设计师的过渡中帮助我吗?任何提示,建议和建议都会有所帮助.
[编辑]感谢链接和答案,我需要自己介绍:)正如我之前提到的,我是一名C++程序员,我确实理解OO基本概念,如继承,抽象,多态和写C++中的代码也理解了一些设计模式.我不理解的是基本的思维过程,人们应该接近一个要求.关于如何评估和决定应该制作什么类的细节,以及如何定义或总结他们应该拥有的关系.知道概念(在某种程度上)但不知道如何应用它们是我似乎的问题有:(有任何建议吗?
我即将开始研究一个涉及重构和修改c&c ++中现有代码的项目.代码是一个膨胀的代码,并且数量巨大.当然,由于代码需要修改,因此我们必须在非常短的时间内开发对代码的理解,因为我们有一些非常紧迫的项目进度表.任何人都可以建议任何有助于实现上述目标的开源工具.总之,我正在寻找的工具可以:
请告诉我任何值得关注的经历,偏好或收藏.
[编辑]想出了上面提供帮助的工具列表.这是清单:
UMLStudio
为您的OO遗留代码创建对象模型是分析,理解和维护它的最佳方法.UMLStudio可以比任何其他CASE工具更快地将C++,Java,CORBA IDL,PHP 5和Ada 95代码转换为OOA和D表示法.
CodeDrawer for C++
The CodeDrawer converts source code to visual based diagrams. Class, struct, and any elements of source code can be shown diagrams. It also shows the logics of a function and a method. The CodeDrawer helps understand source code of your project
Imagix
Reverse engineering and visualization of source code lead to improved program comprehension. Speeds:
Learning Unfamiliar Code
Change Impact …
在大型项目工作期间,很快就会转移到一个已处于维护阶段的项目.最终你手上有一个巨大的代码C/C++代码库,并没有太多关于设计的文档.最后能够给你一些关于代码的知识转移的人已经离开了公司,并且为你的恐怖添加了没有足够的时间来熟悉代码并开发对整体模块的理解.在这种情况下,当你是期望修复模块上的错误(核心转储,功能,性能问题等)你将采取什么方法?
所以问题是:在尝试修复错误时,调试不太熟悉的C/C++代码库的常用步骤是什么?
编辑:Enviornment是Linux,但代码也在Windows上移植,因此对两者的建议都会有所帮助.
在C++程序中启用RTTI的内存/性能开销是多少?
任何人都可以在RTTI机制的内部实现和相关的开销之间提出一些建议吗?
我明白如何通过使用RTTI typeid和dynamic_cast,我试图了解的是运行时间如何跟踪这些信息的内部实现细节,它是如何开销?
我收集unrestricted unions了C++ 11中提出的功能之一.任何人都可以解释这背后的语义及其提供的优势吗?