『C/C++』
文章平均质量分 86
fallenink
唯有痛苦,才有快乐。
展开
-
『C/C++』一个用C/C++分别实现接口与实现相分离的设计原则的例子
原文链接:一个用C/C++分别实现接口与实现相分离的设计原则的例子良好的设计应该只暴露接口给用户,所有的实现细节对用户来说应该是隐藏的,也就是说用户只要给接口传递相应的参数就行了,不需要管内部是如何实现的,比如我们使用fopen,fseek,CreateWindow等函数会发现很好用,而不需要管fopen,fseek,CreateWindow函数内部代码是如何实现的,数据结构是如何组织转载 2013-08-19 09:36:51 · 1458 阅读 · 1 评论 -
『C/C++』公有继承,私有继承,和保护继承
原文地址:公有继承,私有继承,和保护继承1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。转载 2013-10-28 17:08:12 · 859 阅读 · 0 评论 -
【C/C++】c++弱引用 强引用
原文地址:c++弱引用 强引用原来,我认为“为什么会有引用计数这样的技术”是为了内存自动回收和节省内存,但是读完下面的几节后,内存自动回收是一个原因,但是节省内存并不是真正的原因,真正的原因是有些对象如果被复制在现实中是不合事实的。为什么有引用计数 C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象转载 2013-12-01 09:55:13 · 1018 阅读 · 0 评论 -
【C/C++】C++ typeid获取类型名
原文地址:C++ typeid获取类型名在我的项目中,有这样一个需求:在socket(TCP协议)通信部分,需要根据不同的业务协议类型分别设置一个不同的block时间。而此时我已经拿到了指向该协议(数据)对象的(父类型)指针。那最简单的区分不同协议的方式就是使用c++的 typeid操作符。typeid操作符的作用就是获取一个表达式的类型。返回结果是const type转载 2013-12-01 09:10:08 · 1601 阅读 · 0 评论 -
【C/C++】C++库研究笔记——函数名的宏定义
原文地址: C++库研究笔记——函数名的宏定义6.47 Function Names as Strings:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.htmlGCC provides three magic variables that hold the name of the current functi转载 2013-12-01 09:28:51 · 1339 阅读 · 0 评论 -
【C/C++】标准C++中的string类的用法总结
原文地址:标准C++中的string类的用法总结相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可转载 2013-12-02 23:18:29 · 565 阅读 · 0 评论 -
【C/C++】C++之private虚函数
原文地址:C++之private虚函数一般我们说虚函数,它的访问级别都是public的,用类对象可以直接调用,这样就可以实现运行时的类型绑定,那如果我们将虚函数私有化会出现什么情况呢?我们先来看一个非虚函数私有化的例子class Base{private: void PrintClassName () { cout"Bas转载 2013-12-03 00:31:36 · 1300 阅读 · 0 评论 -
『C/C++』C++构造函数无返回值,如何判断对象是否“构造”成功?
原文地址:C++构造函数无返回值,如何判断对象是否“构造”成功?一道面试题,答案可能不惟一:C++构造函数无返回值,如何判断对象是否“构造”成功? 注意:这里的“构造”不是单指分配对象本身的内存,而是指在建立对象时做的初始化操作(如打开文件、连接数据库等)这就是为什么我们在创建对象的时候要用:try, catch的原因。这种类似作业的构造函数转载 2013-12-14 12:27:13 · 4104 阅读 · 0 评论 -
『C/C++』C++中的类型转换
转载自:Regular cast vs. static_cast vs. dynamic_caststatic_cast is used for cases where you basically want to reverse an implicit conversion, with a few restrictions and additions. static转载 2013-12-30 17:08:04 · 842 阅读 · 0 评论 -
『C/C++』G++的命名返回值优化 -- NRVO
原文地址:G++的命名返回值优化 -- NRVO今天在运行C++ primer中一段程序的时候,没有打印复制构造函数的信息,代码如下: [cpp] view plaincopyclass Exmpl { public: Exmpl() {cout "Exmple()"转载 2013-12-18 12:37:26 · 1574 阅读 · 0 评论 -
『C/C++』友元函数和友元类
原文地址:友元函数和友元类友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提转载 2013-12-18 21:19:37 · 596 阅读 · 0 评论 -
『C/C++』C++ 中operator用法:隐式类型转换
原文地址:C++ 中operator用法:隐式类型转换C++中的operator主要有两个作用,一是操作符的重载,一是操作符的转换。对于操作符的重载,许多人都不陌生,用以下这个小例子温故一下:[cpp] view plaincopyclass A { public: A operator转载 2013-12-19 10:59:32 · 1711 阅读 · 0 评论 -
『C/C++』C++中的继承和组合区别使用
原文地址:C++中的继承和组合区别使用C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们要给“继承”立一些使用规则: 一、如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能。 不要觉得“不吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。 二、如果类B 有必要使转载 2013-10-28 15:50:42 · 1142 阅读 · 0 评论 -
『C/C++』[C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
原文地址:C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托引言:对于一些刚接触C# 不久的朋友可能会对C#中一些基本特性理解的不是很深,然而这些知识也是面试时面试官经常会问到的问题,所以我觉得有必要和一些接触C#不久的朋友分享下关于C#基础知识的文章,所以有了这个系列,希望通过这个系列让朋友对C#的基础知识理解能够更进一步。然而委托又是C#基础知识中比转载 2013-10-29 10:18:17 · 911 阅读 · 0 评论 -
『C/C++』C语言的设计模式-接口隔离
原文地址:C语言的设计模式-接口隔离接口隔离:(更好的可参考:《C语言接口与实现》一书)定义为客户端不应该依赖它不需用的接口,在C语言中我们可以把头文件看成一个模块的接口,根据接口隔离原则也就是说这个头文件中只能包含外部需要的接口,但在实际的项目中往往头文件都不符合接口隔离原则。1:内、外部接口的隔离:头文件中通常包含了模块内部接口(内部类型定义、内部接口声明)转载 2013-07-17 08:56:39 · 1656 阅读 · 0 评论 -
『C/C++』POD types
原文地址:关于POD另可参考:What are POD types in C++?A plain old data structure (POD) is a data structure that is represented only as passive collections of field values, without using encapsulation转载 2013-10-10 14:40:12 · 2246 阅读 · 0 评论 -
『C/C++』引用(&)的用法
原文地址:C++中引用(&)的用法和应用实例补充在开头(在boost中看到,就直接贴代码了,不解释):/// Create a new non-modifiable buffer that represents the given POD array./** * @returns A const_buffers_1 value equivalent to: * @code转载 2013-10-10 15:21:07 · 1683 阅读 · 0 评论 -
『C/C++』ANSI C、C99、C11
C–K&R C 与 ANSI C的区别C语言由Dennis M. Ritchie在1973年设计和实现。从那以后使用者逐渐增加。到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的《The C Programming Language》,将C语言推向全世界,许多国家都出了译本,国内有一些C语言书就是这本书的翻译或者编译。由这本书定义的C语言后来被人们称作转载 2013-09-29 11:30:57 · 2382 阅读 · 0 评论 -
『C/C++』关于 wcout 输出中文的问题
原文地址:关于 wcout 输出中文的问题关于 wcout 输出中文的问题作者:阙荣文时间:2011/8/161. cout场景1: 在源文件中定义 const char* str = "中文" 在 VC++ 编译器上,由于Windows环境用 GBK编码,所以字符串 "中文" 被保存为 GBK内码,编译器也把 str 指向一个包含有 G转载 2013-10-16 16:07:47 · 1406 阅读 · 0 评论 -
【C/C++】C++模板元编程 入门简介
原文地址:C++模板元编程 入门简介最近一直在看STL和Boost,源码里边好多涉及到模板元编程技术,简单了解一下,备忘(Boost Python中的涉及模板元的部分重点关注一下)。// 主模板templatestruct Fib{ enum { Result = Fib::Result + Fib::Result };};// 完全特化版templa转载 2013-10-28 21:05:12 · 1275 阅读 · 0 评论 -
【C/C++】细说C++委托和消息反馈模板
原文地址:细说C++委托和消息反馈模板C++实现委托和消息反馈模板:继承+多态乍一看是理所当然的选择,库中的类把响应处理函数设置为虚函数,客户程序可以继承这个类并且重载响应函数。以某个Socket类为例,可以提供一个OnRecv函数用来响应网络数据包到达的处理。客户程序只需要重载OnRecv并进行自己的处理就可以了。struct Socket { // ba转载 2013-10-28 21:40:50 · 1146 阅读 · 0 评论 -
『C/C++』多态性 polymorphism
原文地址:浅谈C++多态性C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数转载 2013-10-28 15:47:29 · 926 阅读 · 0 评论 -
【C/C++】 高效C++委托的原理
原文地址:高效C++委托的原理写这篇学习心得源自于一篇老外的文章Member Function Pointers and the Fastest Possible C++ Delegates,网上也有它对应的中文翻译,我随意找一篇:http://www.cnblogs.com/jans2002/archive/2006/10/13/528160.html。文章中提到了高效C转载 2013-10-28 21:14:13 · 1275 阅读 · 0 评论 -
【C/C++】理解虚基类、虚函数与纯虚函数的概念
原文地址:理解虚基类、虚函数与纯虚函数的概念引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。正文 虚基类 在说明其作用前先看一段代转载 2013-10-28 21:43:57 · 1889 阅读 · 0 评论 -
『C/C++』整型和字符串相互转换
原文地址:整型和字符串相互转换 我们写程序的时候经常会遇到整型和字符串相互转换的问题,这里要用到几个函数,itoa(),atoi(),sprintf()下面来介绍下这几个函数的具体用法! itoa 功 能:把一整数转换为字符串 用 法:char *itoa(int value, char *string, int radix);转载 2014-01-16 17:03:56 · 2966 阅读 · 0 评论