
C++/类型转换及指针
imxiangzi
这个作者很懒,什么都没留下…
展开
-
一个隐式类型转换引起的重载函数二义性错误
介绍因为隐式类型转换而引起的一个非常隐晦的错误 下述代码的目的是设计一个简单的类A,希望A的对象在标准输出和文件输出时的表现不同 [cpp] view plaincopy #include #include using namespace std; class A { public:转载 2015-10-15 13:11:07 · 757 阅读 · 0 评论 -
智能指针(三):unique_ptr使用简介
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,可咋整呢? 这个时候就要使用unique_ptr了,顾名思义嘛,uniq转载 2016-03-09 13:27:20 · 394 阅读 · 0 评论 -
智能指针(二):shared_ptr实现原理
前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元素 下面我们来瞧瞧shared_ptr具体是咋实现的.相较auto_ptr有下面几个转载 2016-03-09 13:26:45 · 371 阅读 · 0 评论 -
智能指针(一):STL auto_ptr实现原理
智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢? 指针与内存 说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数. 但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能自动手动的使用free或delete去释放.所以使用heap时处理的不好很容转载 2016-03-09 13:26:19 · 362 阅读 · 0 评论 -
std::auto_ptr 官网例子
1.std::auto_ptr::auto_ptr //auto_ptr example #include #include int main () { std::auto_ptrint> p1 (new int); *p1.get()=10; std::auto_ptrint> p2 (p1); std::cout "p2 points to " '\n';转载 2016-03-09 13:16:11 · 967 阅读 · 0 评论 -
理解smart pointer之一(auto_ptr介绍)
a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic garbage collection or bounds checking. These additional features are intended t转载 2016-03-09 13:13:43 · 530 阅读 · 0 评论 -
auto_ptr 代码及缺陷
uto_ptr是C++标准库里的类,它接受一个类型形参的模板,为动态分配的对象提供异常安全。其实,它的核心思想是:用一个对象存储需要被自动释放的资源,然后依靠对象的析构函数来释放资源,这是《More Effective C++》中的解释。下面给出它的一个简单实现,摘自《More Effective C++》附录,做了部分修改,不支持不同类型的转换。已通过VC6.0编译。 [cpp]转载 2016-03-09 13:13:00 · 528 阅读 · 0 评论 -
智能指针auto_prt的使用(c++学习笔记)
c++中如果要申请资源一般用到new,最后释放资源delete,如果我们在delete之前就退出了函数呢,看下面的代码: [cpp] view plain copy #include //#include using namespace std; void fun() { int *ptr = new转载 2016-03-09 13:08:57 · 1505 阅读 · 0 评论 -
【C++11】新特性——auto的使用
C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。 1. 自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。转载 2016-03-09 12:59:07 · 482 阅读 · 0 评论 -
static_cast与dynamic_cast转换
一 C语言中存在着两种类型转换: 隐式转换和显式转换 隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成 char ch;int i = ch; 显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加 char *pc = (char*)pb;void *ps = (void*)pa; 二 C++中的类型转换转载 2016-03-05 10:19:54 · 629 阅读 · 0 评论 -
static_cast、dynamic_cast、const_cast和reinterpret_cast总结
前言 这篇文章总结的是C++中的类型转换,这些小的知识点,有的时候,自己不是很注意,但是在实际开发中确实经常使用的。俗话说的好,不懂自己写的代码的程序员,不是好的程序员;如果一个程序员对于自己写的代码都不懂,只是知道一昧的的去使用,终有一天,你会迷失你自己的。 C++中的类型转换分为两种: 隐式类型转换;显式类型转换。 而对于隐式变换,就是标准的转换,在很多时候,不经意转载 2016-03-05 10:18:57 · 395 阅读 · 0 评论 -
C++类型向上转换的一种形式
C++类型向上转换的一种形式 http://blog.youkuaiyun.com/gukesdo/article/details/7268476 C++中的向上类型转换和向下类型转换 http://blog.youkuaiyun.com/wangweitingaabbcc/article/details/7720979 C++ 多转载 2016-01-31 23:46:38 · 442 阅读 · 0 评论 -
C++中智能指针的设计和使用
转载请标明出处,原文地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7561235 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对转载 2016-03-10 11:44:42 · 381 阅读 · 0 评论