![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++编程
下木
关注分布式计算,操作系统以及计算机体系结构. 微博:http://weibo.com/u/2120698533
展开
-
C++之面向对象编程总结
1. 面向对象编程的三个基本概念:数据抽象(类),继承(类继承)和动态绑定(运行时决定使用基类函数还是派生类函数)。面向对象编程的关键思想是多态性。2. 派生类可以继承基类中定义的成员;派生类可以调用基类函数;派生类可以重定义基类的函数;派生类可以定义新的数据成员和函数成员。3. 基类通过关键字virtual来指出希望派生类重新定义的函数(虚函数)。而基类希望派生类继承的函数不能使用virtual关键字。4. 通过动态绑定可以使我们在继承层次中使用任意类型的对象,而不用关心对象的具体类型。使用这些类的原创 2014-08-22 15:11:51 · 1277 阅读 · 0 评论 -
Name Mangling in C++
Name Mangling(C++)Author: Chaos LeeDate: 2012/05/06摘要:详细介绍了C++中的Name Mangling的原理和gcc中对应的实现,通过程序代码和nm c++filt等工具来验证这些原理。对于详细了解程序的链接过程有一定的帮助。Name Mangling概述大型程序是通过多个模块构建而成,模块之间的关系由makefile来描述。原创 2013-02-27 11:08:24 · 420 阅读 · 0 评论 -
对两个奇葩的C语言程序的思考
两个奇葩的C语言程序#include <stdio.h>#include <stdlib.h>void main(int i) { printf("%d\n", i); (&main + (&exit - &main)*(i/1000))(i+1);}原创 2014-07-04 19:11:39 · 3485 阅读 · 0 评论 -
【系列】C/C++函数指针详解-3
摘要:这篇文章详细介绍C/C++的函数指针,请先看以下几个主题:使用函数指针定义新的类型、使用函数指针作为参数、使用函数指针作为返回值、使用函数指针作为回调函数、使用函数指针数组,使用类的静态函数成员的函数指针、使用类的普通函数成员的指针、定义函数指针数组类型、使用函数指针实现后绑定以及在结构体中定义函数指针。如果您对以上这几个主题都很了解,那么恭喜您,这篇文章不适合您啦~。在一些开源软件中,如Boost, Qt, lam-mpi中我们经常看到函数指针,本文目的是彻底搞定函数指针的语法和语义,至于怎样将函数原创 2013-02-27 11:07:09 · 531 阅读 · 0 评论 -
【系列】C/C++函数指针详解-2
摘要:这篇文章详细介绍C/C++的函数指针,请先看以下几个主题:使用函数指针定义新的类型、使用函数指针作为参数、使用函数指针作为返回值、使用函数指针作为回调函数、使用函数指针数组,使用类的静态函数成员的函数指针、使用类的普通函数成员的指针、定义函数指针数组类型、使用函数指针实现后绑定以及在结构体中定义函数指针。如果您对以上这几个主题都很了解,那么恭喜您,这篇文章不适合您啦~。在一些开源软件中,如Boost, Qt, lam-mpi中我们经常看到函数指针,本文目的是彻底搞定函数指针的语法和语义,至于怎样将函数原创 2013-02-27 11:07:05 · 582 阅读 · 0 评论 -
【系列】C/C++函数指针详解-1
摘要:这篇文章详细介绍C/C++的函数指针,请先看以下几个主题:使用函数指针定义新的类型、使用函数指针作为参数、使用函数指针作为返回值、使用函数指针作为回调函数、使用函数指针数组,使用类的静态函数成员的函数指针、使用类的普通函数成员的指针、定义函数指针数组类型、使用函数指针实现后绑定以及在结构体中定义函数指针。如果您对以上这几个主题都很了解,那么恭喜您,这篇文章不适合您啦~。在一些开源软件中,如Boost, Qt, lam-mpi中我们经常看到函数指针,本文目的是彻底搞定函数指针的语法和语义,至于怎样将函数原创 2013-02-27 11:07:00 · 929 阅读 · 0 评论 -
C/C++的注意事项
最近调试C语言程序,出了一些错误,费了很大的力气才找到这些BUG。现在把这些错误记录下来,同时做一些编程上的原则上的约束,希望能达到两个目的:(1)看到类似的情况,能马上定位知道是什么错误。(2)不在犯这种错误。 将64位整型转换为32位整型,貌似是没什么问题。但是在做多结点间数据通信的时候,这个不注意的细节将导致很严重的错误。例如在发送端使用的是64位的整型,接收端使用32位原创 2013-02-27 11:08:34 · 404 阅读 · 0 评论 -
集群节点列表编辑程序
在集群上跑程序的人都知道要编辑一个节点列表文件来说明在哪些机器上启动进程,以及在某个机器上启动的进程的数量,最典型的情况是mpi。但是如果机器的数量过大,比如有500个节点的机群,这样要维护这个文件也是一件比较头疼的事情。 维护节点列表文件,主要是进行三个操作:创建列表,删除某些节点,修改某些节点。接下来就可以用C或者Python实现一个具备这三种功能的小程序了。今天上午实现了一个,代码原创 2013-02-27 11:08:50 · 437 阅读 · 0 评论 -
编写一个简单通用的makefile
author:李超date:2012/05/06 纵然makefile的规则还是相当多的,编写一个大规模的软件,良好的makefile架构是方便维护程序编译的关键。学习makefile的时间周期还是比较长的,为了写出规范的代码,需要在很短的时间内编写一个makefile,这里给给出一个makefile示例。在组织程序的时候可以按照这个示例给出的结构进行,同时还能提高程序的可读性和原创 2013-02-27 11:08:17 · 828 阅读 · 0 评论 -
在unix系统中实现堆栈跟踪
在程序运行的过程中,如果出现异常,通常会发出一个信号进入信号处理函数中处理。有些故障过于严重到无法实现程序的自恢复。这个时候,程序只能无奈的输出一些错误信息。当然这些错误信息对程序的调试也是非常有帮助的,我们在Java中如果出现异常的话,一般都会打印出堆栈跟踪的信息。<span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-原创 2013-02-27 11:06:55 · 622 阅读 · 0 评论 -
使用C语言中的宏来定位出错信息
编写一个软件时,软件的健壮性时特别值得考虑的问题。使用C++时可以使用异常捕获机制,在设计完软件的模块架构的时候然后再设计异常捕获架构,一般来说需要设计一个异常捕获网来捕获程序中可能的异常。 对于异常的处理,有些情况下没有办法实现程序的自恢复,这时候只能无奈的输出程序的出错的一些信息。在我看来,这些信息具体又分为静态信息和动态信息。静态信息是编译器期间确定的一些属性,动态期间是在运行时期原创 2013-02-27 11:06:52 · 548 阅读 · 0 评论 -
关于C语言中的预处理器的简单笔记
在将源代码提交给编译器之前,C语言预处理器将对源代码做出一定修正。预处理器命令有很多如最常用的#include,#define命令.<span style="mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast原创 2013-02-27 11:06:50 · 427 阅读 · 0 评论 -
常成员函数:Const类限定的成员函数
常成员函数是使用const关键字说明的函数。常成员函数表示这个函数不会对这个类对象的数据成员作任何改变.常量(const)对象可以调用const修饰的函数,不能调用非const修饰的函数.4. 对成员变量只读的函数应该尽量设计成常成员函数.5. 只有非静态成员函数才能是常函数(对象属性).6. const不能用于构造、析构(程序执行不警告).原创 2014-08-13 17:57:15 · 1130 阅读 · 0 评论