
C++语言特性
文章平均质量分 54
FanTasyCC
这个作者很懒,什么都没留下…
展开
-
C++中const的使用
const就是为了表述“不变化的值”这样一个概念,这在一些实际的问题环境中非常有用。例如: 1.许多对象在初始化之后就不需要再改变自己的值 2.与使用文字量相比(字面常量),采用符号常量写出的代码更容易维护 3.指针常常是边读边移动,而不是边写边移动,STL中const迭代器就是很好的例子 4.许多函数的参数是只读的,C标准库中就有很多这样的函数,例如strcpy,strcat,strlen co原创 2008-12-05 19:16:00 · 721 阅读 · 0 评论 -
boost之lexical_cast使用
安全从数字字符串到整数的转换: #include template bool safe_lexical_cast(const char* str, T& ret_val) { try { ret_val = boost::lexical_cast(str); return true; } catch (boost::bad_lexical_c原创 2015-04-27 14:55:20 · 1789 阅读 · 0 评论 -
c++内存布局(二)
C++ 对象的内存布局(下) 陈皓 http://blog.youkuaiyun.com/haoel 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),转载 2012-07-09 18:54:27 · 937 阅读 · 0 评论 -
c++内存布局(一)
C++ 对象的内存布局(上) 陈皓 http://blog.youkuaiyun.com/haoel 前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说转载 2012-07-09 18:52:07 · 1009 阅读 · 0 评论 -
allocator使用
// allocatorStudy.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ /* 内存分配器原创 2010-02-25 19:00:00 · 1260 阅读 · 0 评论 -
c++异常使用
// ExceptionStudy.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;class CMyException{public: CMyException(void) { cout原创 2010-02-28 19:34:00 · 715 阅读 · 0 评论 -
new
// newStudy.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int* p原创 2010-02-23 18:07:00 · 764 阅读 · 0 评论 -
函数模板编程
Common.h#ifndef _COMMON_H_#define _COMMON_H_/* 函数模板 全部采用包含编译模型*//* 函数模板声明 */templateint Compare(const T& v1, const T& v2);templateint Compare0(T v1, T v2);templateT Compare1原创 2010-02-23 15:51:00 · 671 阅读 · 0 评论 -
内联函数
/* Common.h *//* 好处:内联函数避免函数调用的开销 注意事项:内联函数定义应该放到头文件中*//* 函数原型声明为inline */inline int Max(int a, int b);/* 这里不用再次inline,加上也无妨 */int Max(int a, int b){ return (a > b ? a : b);}原创 2010-02-22 19:20:00 · 537 阅读 · 0 评论 -
C语言中几个与临时文件操作相关的函数
1.FILE * tmpfile ( void );创建一个二进制临时文件,并以"wb+"模式打开,函数成功返回文件流指针,失败则返回NULL。这个临时文件会在当前目录所在的磁盘根目录下。如果创建的临时文件数目不超过TMP_MAX(stdio.h中)且磁盘空间充足,函数调用则不会失败。这个临时文件会在用户调用fcolse关闭文件时自动删除临时文件。2.char * tmpnam ( char *原创 2009-08-06 23:40:00 · 3398 阅读 · 1 评论 -
易变mutable
作为程序员,你写的程序(就拿个类来说吧)只有三种可能:1.为程序员用户写的,供其它程序员用,自己充当功能的封装角色,就像程序库的设计者一样2.仅仅自己用,就像把局部重复次数比较多的代码段写成函数一样3.自己用,其它程序员也想用,毕竟重用是编程的最高境界把一个类成员函数适时的加上const关键字对于以上三种情况都是有着积极的意义,以下是三种情况的理由:1.加上const关键字,程序员通过接口声明就会原创 2008-12-11 19:34:00 · 2266 阅读 · 7 评论 -
C++中的类型转换
和goto语句一样类型转换的名声似乎也是不那么好。不过类型转换在某些紧要关头就显得尤为重要,看看现有的C/C++代码就知道,以至于你不理解转换的作用,代码将是无法阅读的。就像铀,它能变成原子弹,但它也能用来发电,是灾难还是福祉那就要看人类了。显然类型转换默默承受着这不公的一切。不管怎么说C风格的类型转换还是不尽人意的:1.它们很粗糙,你可以通过它们在任意类型之间进行转换,没有明确指定每个转换的目的原创 2008-12-05 19:19:00 · 1361 阅读 · 0 评论 -
运算符*, 前缀++,后缀++
对于刚学习C或C++语言来说,++运算符可谓是臭名昭著。大家在学的时候都知道前缀++就是先加1再使用,而后缀++就是先使用后再加一。例如:int i = 0;int j = 0;int k = 0;j = i++;k = ++i;那么j现在的值还是0,而k的值是2,i现在本身也是2,这应该没什么好说的,很简单,如果要是笔试的时候出的都是这样的题那该多好啊。看下面的int i = 1;int j =原创 2008-12-05 19:18:00 · 2027 阅读 · 0 评论 -
一种多线程安全的单例模式
template class StaticSingletonT { public: static T* SafeInstance() { static T* s_instance_ptr = NULL; if (!s_instance_ptr) { if (atomic_compare_exchange(&s_state, OBJECT_原创 2015-04-27 14:59:11 · 1134 阅读 · 0 评论