C++
csmips
这个作者很懒,什么都没留下…
展开
-
C++编译的若干问题
1. 在A.h文件中实现一个class A的成员函数A::func{...}, 用到了class B。如果class B在A.h中仅仅只是声明 class B;,则编译器会报错:A::func{...; B b->foo(); ...} class B的定义找不到。 正确的做法是,将A::func() {...} 放在A.cpp中。2. class A; class A1 : A。原创 2017-10-27 17:18:58 · 192 阅读 · 0 评论 -
VS 2015链接错误:unresolved external symbol
错误信息:Error LNK2019unresolved external symbol __imp_UnDecorateSymbolName referenced in function "class llvm::StringRef __cdecl undname(char const *)"原因:使用Dbghelp.h中的函数UnDecorateSymbolName原创 2017-11-06 16:37:50 · 3618 阅读 · 0 评论 -
我看C++与Java
Java所有的对象在heap上分配,所有的变量都是引用(primitive type除外),所有的对象内存由GC管理。这样设计的结果就是:Java中的变量的赋值(包括method传参和返回值)、对象的copy,都非常简单。 C++的复杂性:1)C++的对象除了在heap上分配,还可以在stack和non-local scope上分配,导致对象赋值极其复杂。其引起的复杂性有:...原创 2017-10-24 16:25:30 · 171 阅读 · 0 评论 -
std::unique_ptr和std::shared_ptr的用法
1. std::unique_ptr创建一个unique指针,放入容器(例如map),但是将实际指针返回,赋值到其他object.field。也就是所容器的元素负责对资源进行管理,而资源实际上被到处使用。容器本身是一个object A的field。也就是说,A自身消亡的时候,容器会自动释放所有资源。因此,std::unique_ptr起到一个管理内存资源的作用。实际的raw ptr原创 2017-11-06 09:35:14 · 3579 阅读 · 0 评论 -
C++11类型转换
1. static_cast(var)将var的类型转换为type。 普通的强制类型转换,系统不会做任何检查。程序员保证类型转换的正确性。2. dynamic_cast(ptr)ptr必须是一个指针或地址。将ptr所指的类转换为type。ptr是一个基类的指针类型,type是衍生类。系统在执行时进行检查,如果类继承性关系存在,那么dynamic_cast(ptr)返回一个typ原创 2017-11-06 16:35:30 · 296 阅读 · 0 评论