C/C++
文章平均质量分 58
木子小新
这个作者很懒,什么都没留下…
展开
-
C++ 11 学习3:显示虚函数重载(override)
5.显示虚函数重载在 C++ 里,在子类中容易意外的重载虚函数。举例来说:struct Base { virtual void some_func();}; struct Derived : Base { void some_func();};Derived::some_func 的真实意图为何? 程序员真的试图重载该虚函数,或这只是意外?原创 2015-09-20 21:22:16 · 575 阅读 · 0 评论 -
一个实体应该只有一个紧凑的职责
实体:变量、类、函数、名称空间、模板和库。只给一个实体赋予一个定义良好的职责。随着实体变大,其职责范围自然也会扩大,但不应该发散。如果一个实体有几个不同的目的,则给使用带来的难度往往会激增,因为这种实体除了会增加理解难度、复杂性和各部分中的错误外,还会导致其他问题。这种实体不仅更大,而且更难以使用和维护。此外,这种实体经常会为自身的一些特定用途提供有问题的接口,因为各个功能领域之间的部原创 2015-09-20 21:21:09 · 285 阅读 · 0 评论 -
ACE网络编程笔记(2):IPC SAP、ACE_SOCKET和TCP/IP通信实例
socket、TLI、STREAM管道和FIFO为访问局部和全局IPC机制提供广泛的接口。但是,有许多问题与这些不统一的接口有关联。比如类型安全的缺乏和多维度的复杂性会导致成问题的和易错的编程。ACE的IPC SAP类属提供了统一的层次类属,对那些麻烦而易错的接口进行封装。在保持高性能的同时,IPC SAP被设计用于改善通信软件的正确性、易学性、可移植性和可复用性。 IPC SAP类属原创 2015-09-20 21:21:49 · 1563 阅读 · 0 评论 -
《C++编程规范》--不要拘泥于小节
如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明。 ---Gerald Weinberg 《C++编程规范》这本书是对多年的C++经验的总结,是编写高质量C++代码的准则。原创 2015-09-20 21:21:00 · 786 阅读 · 1 评论 -
标准C++的一些约定
1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++03,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。 2. C++/CLI 和 C# 是微软的,它们与C和C++没有任原创 2015-09-20 21:20:01 · 344 阅读 · 0 评论 -
在高警告级别干净利落的进行编译
虽然警告不会影响你代码的运行,但请不要忽略它。把编译器当做你的朋友,如果它对你发出警告,这经常是说明你的代码中存在潜在的问题。常遇到的一些警告:1、第三方头文件。2、未使用的函数参数。3、定义了从未使用过的变量。4、变量使用前可能未经过初始化。5、遗漏了return语句。6、有符号数/无符号数不匹配。例外情况:有时候,编译器可能发生烦人的甚至虚假的警告,但是原创 2015-09-20 21:21:04 · 445 阅读 · 0 评论 -
避免使用宏
概述: 宏是C和C++语言的抽象设施中最生硬的工具,它是披着函数外衣的饥饿的狼,很难驯服,它会我行我素地游走于各处。要避免使用宏。讨论: 在C++中,几乎从不需要使用宏。 可以用const或者enum定义易于理解的常量,用inline避免函数调用的开销,用template指定函数系列和类型系列,用namespace避免名称冲突。原创 2015-09-20 21:21:18 · 333 阅读 · 0 评论 -
ACE网络编程笔记(1):ACE自适配通信环境
介绍 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)构架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++Wrapper Facade(包装外观)和构架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处原创 2015-09-20 21:21:44 · 560 阅读 · 0 评论 -
C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)
3.空指针(nullptr)早在 1972 年,C语言诞生的初期,常数0带有常数及空指针的双重身分。 C 使用 preprocessor macroNULL 表示空指针, 让 NULL 及 0 分别代表空指针及常数 0。 NULL 可被定义为 ((void*)0) 或是 0。C++ 并不采用 C 的规则,不允许将 void* 隐式转换为其他类型的指针。 为了使代码 char* c = NU原创 2015-09-20 21:22:12 · 496 阅读 · 0 评论 -
C++ 11 学习1:类型自动推导 auto和decltype
Cocos 3.x 用了大量的C++ 11 的东西,所以作为一个C++忠实粉丝,有必要对C++ 11进行一个系统的学习。使用C++11之前,一定要注意自己使用的编译器对C++11的支持情况,有些编译器并不是完全支持,比如我正在使用的vs2012。这里是msdn里面VS各版本对C++ 11 的支持 对 C++11 功能的支持(现代 C++) 1.autoauto这个关键字C++原先就原创 2015-09-20 21:22:07 · 1549 阅读 · 0 评论 -
lua和c的亲密接触
介绍lua和c的亲密接触,靠的是一个虚拟栈。lua通过这个虚拟栈来实现和c之间值的互传。栈上的每一个元素是一个lua值(nil,number,string...)。当lua调用c函数的时候,这个函数会得到一个新的栈,这个栈独立于c函数本身的栈,也独立于lua自己的栈。它里面包含了lua要传给c的所有参数,然后c函数会把返回的结果放入这个栈中返回给调用者。对于栈的查询操作,如果按照栈的规原创 2016-01-15 18:27:39 · 408 阅读 · 0 评论