蘭陵N梓記

一指流沙,程序年华


  • 首页

  • 归档

  • 关于

  • 搜索
close

c++技巧之名字空间namespace

时间: 2009-07-13   |   分类: 技术     |   阅读: 1024 字 ~3分钟

C开发人员会经常使用#define即宏来声明常量,但宏却是全局的,对大的工程来说是很难维护,经常是导致名字冲突。还好,C++给我们带来了namespace名字空间。它的使用如下,名字空间可以把一组逻辑分组,同时名字空间也是一种作用域。

namespace outspname {   
   const int CVAR1 = 1;  
   const char* const CVAR2 = "33333";  
   void test();  

   namespace inspname {  
      enum { A, B, C};  
      class Klass {};  
   }  
}
阅读全文 »

面向对象的设计原则

时间: 2009-07-03   |   分类: 笔记     |   阅读: 1368 字 ~3分钟

为什么要有设计

如何同时提高一个软件系统的可维护性和可复用性是面向对象的设计要解决的核心问题。

导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化而“腐烂”的真正原因有四个:

  • 过于僵硬
  • 过于脆弱
  • 复用率低
  • 黏度过高

一个好的系统设计应该有如下的性质,这三条性质就是一个系统设计应当达到的目标。

  • 可扩展性
  • 灵活性
  • 可插入性
阅读全文 »

c++ STL容器erase方法的不同陷阱

时间: 2009-07-01   |   分类: 技术     |   阅读: 790 字 ~2分钟

陷阱

STL中的容器都有erase方法,容器的存储分为顺序存储(如vector)与链式存储(如list,map)。先以map为例:

typedef std::map<std::string, std::string> TStrMap;  
typedef TStrMap::iterator TStrMapIter;  

TStrMap strmap;  
TStrMapIter iter = strmap.find("somekey");  
strmap.erase(iter);

这样使用erase方法没有任何问题,删除一个单结节之后,stl中的iterator都是与其中的数据元素关联的,关联的元素删除之后,iter已就失效,iter理解为指向元素的指针,那删除之后可以简单理解为已是一个野指针。

阅读全文 »

c++的仿函数与动态语言的闭包

时间: 2009-06-29   |   分类: 技术     |   阅读: 809 字 ~2分钟

闭包

什么是闭包,我们先来用ruby看个例子:

sum = 0  
10.times{|n| sum += n}   
print sum

其中{}就是闭包的内容,代码看起来是不是很清爽与简单。

我们再来看看Python写的闭包:

def addx(x):      
    return lambda y: x + y  
add8 = addx(8)  
print add8(100)

用Python写就没有那么好看。

阅读全文 »

c++技巧之栈变量的析构应用

时间: 2009-06-25   |   分类: 技术     |   阅读: 944 字 ~2分钟

栈变量

栈变量有一个好处,就是它退栈时会自动析构,并且在栈上对象生成比在堆上分配效率高很多。但每个线程的栈空间是有限的(创建线程时可以设置),所以一般的临时小对象都会在栈上分配。

阅读全文 »

c++技巧之operator操作符

时间: 2009-06-24   |   分类: 技术     |   阅读: 424 字 ~1分钟

背景

这篇博文是以前很久写的,贴在我的早期一个blog中,今天google一下,发现还真有不少人转载,可惜并不注明出处。那时觉得operator比较好玩。C++有时它的确是个耐玩的东东。operator它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。

阅读全文 »

c++实现的queue

时间: 2009-06-20   |   分类: 技术     |   阅读: 546 字 ~2分钟

周末在家,自己用C++练一下手,用顺序存储与链表存储实现了队列queue。queue是一种先进先出的结构,有很多的应用,比如消息队列。

阅读全文 »

c++技巧之断言Assert

时间: 2009-06-14   |   分类: 技术     |   阅读: 953 字 ~2分钟

断言的应该是一种编程的常见技巧。我所应用的断言有两种,一种是动态断言,即大家所熟知的C标准库的assert()宏,一种是C++中的静态断言,即在编译期间检查。

阅读全文 »
13 14 15 16 17 18 19 20 21
兰陵子

兰陵子

Programmer & Architect

164 日志
4 分类
57 标签
RSS 订阅
GitHub 知乎
© 2009 - 2022 蘭陵N梓記
Powered by - Hugo v0.101.0
Theme by - NexT
0%