2012年8月10日

隐藏、覆盖重载问题解析

摘要: 成员函数的重载(overload)、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。1、重载与覆盖1.1成员函数被重载的特征:(1)相同的范围,在相同的作用域中,具体到类中指的就是在同一个类中;(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无;1.2成员函数覆盖特征(1)不同的范围(分别位于派生类与基类)(2)函数名字相同;(3)参数相同;(4)基类函数必须有 virtual 关键字。在下面example 1当中 ,函数Base::f(int) 与 Base::f(float) 相互重载,而Base::g(void) 被 De 阅读全文

posted @ 2012-08-10 17:37 micky.zhou 阅读(211) 评论(0) 推荐(0) 编辑

2012年8月8日

关于函数返回值为数组的时候的问题解析

摘要: 用函数返回值来传递动态内存这种方法虽然好用。但是常常有人把return语句用错了。 我们强调一定不要用return语句返回指向“栈内存”的指针,因为栈内存空间在函数结束后被释放了。1 我在用g++编译如下程序的时候,使用的命令是"g++ -Wall -g getString.cpp -o getString",用gdb调试程序。结果很令人疑惑。 1 #include<iostream> 2 using namespace std; 3 4 char *GetString(void) 5 { 6 char p[]="hello world"; 阅读全文

posted @ 2012-08-08 18:08 micky.zhou 阅读(1933) 评论(0) 推荐(1) 编辑

2012年8月6日

VS2008+OpenCV配置成功(给自己保存)

摘要: 看了网上不少VS+OpenCV环境配置的文章,管用的没几个,下面这篇文章包你管用:工具:VS2008 With SP1 下载地址:自己去找吧,我是分开装的,先装VS2008再装SP1补丁 OpenCV-2.3.1-win-superpack.exe下载地址:http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe cmake-2.8.7-win32-x86.exe下载地址:http://www.cmake.org/files/v2.8/cmake-2.8.7-win32-x86.exe解压OpenCV-2.3.1:运行Op 阅读全文

posted @ 2012-08-06 00:21 micky.zhou 阅读(8666) 评论(0) 推荐(0) 编辑

2012年8月1日

四类内存存储分区中的主要内容

摘要: 一个具有多个源文件的程序经过编辑(editing)、编译(compiling)和连接(linking)后,产生一个文件,即可执行模块(executable module),以供运行。每个以磁盘文件形式存在的可执行模块一般包括两个分区:代码区和数据区,而当系统将可执行模块装载到内存中以便运行时,由系统将栈区和堆区加进程序的内存区中,因此,一个准备运行的程序在内存区中共有四个分区:代码区、数据区、栈区和堆区。所有函数(包括主函数、非主函数、各类中的成员函数)的代码通常被存放在内存的代码区。全局变量和所有静态(外部和内部)变量通常被存放在内存的数据区。所有函数(包括主函数、非主函数、各类中的成员.. 阅读全文

posted @ 2012-08-01 17:26 micky.zhou 阅读(511) 评论(0) 推荐(0) 编辑

(转)gdb反汇编小结

摘要: 如果在Linux平台可以用gdb进行反汇编和调试。(转)2. 最简C代码分析 为简化问题,来分析一下最简的c代码生成的汇编代码: # vi test1.c int main() { return 0; } 编译该程序,产生二进制文件: # gcc test1.c -o test1 # file test1 test1: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, not stripped test1是一个ELF格式32位小端(Little Endian)的可执行文件,动态链接并且符号表没有去除。... 阅读全文

posted @ 2012-08-01 16:17 micky.zhou 阅读(6148) 评论(2) 推荐(2) 编辑

vi快捷键总结

摘要: 文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filen 阅读全文

posted @ 2012-08-01 14:52 micky.zhou 阅读(212) 评论(0) 推荐(0) 编辑

ln命令举例详解

摘要: 举例:1.对某个文件创建一个连接[root@A ~]# ln -s /home/kk/ss.sh ~ #如果不写目标地址,即在当前目录建接立链接[root@A ~]# lsCentOS-Base.repo.oldboy anaconda-ks.cfg install.log install.log.syslog ss.sh此命令表示在家目录下创建与源文件同名的链接到/home/kk/ss.sh 符号连接[root@A ~]# ln -s /home/kk/ss.sh ~/dd[root@A ~]# lsCentOS-Base.repo.oldboy anaconda-ks.cfg dd ins 阅读全文

posted @ 2012-08-01 14:06 micky.zhou 阅读(33301) 评论(0) 推荐(1) 编辑

2012年7月29日

(转)C++内存管理

摘要: 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从 中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程 序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放 弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。1 内存管理1.1 C++内存管理详解1.1.1 内存分配方式1.1.1.1 分配方式简介 在C++. 阅读全文

posted @ 2012-07-29 08:37 micky.zhou 阅读(234) 评论(0) 推荐(0) 编辑

2012年7月22日

Emasc常用快捷键

摘要: C是ctrl,M是altC-x是同时按,C x是先按ctrl放开后再按x1、文件操作快捷键对应菜单栏的File命令C-x C-f打开emacs默认目录下home的某个文件C-x d打开文件路径,查看某个文件的属性信息,并在这个文件上进行编辑操作C-x i将某个文件的内容插入到当前的缓冲区C-x C-v打开一个文件,取代当前缓冲区C-x C-s保存文件C-x C-w将当前缓冲区文件另存为新文件C-x C-q切换为只读或者读写模式C-x C-c退出Emacs2、编辑操作快捷键对应菜单栏的Edit命令C-f光标前进一个字符M->光标移动到文件尾部C-b光标后退一个字符C-M-f向前匹配括号M- 阅读全文

posted @ 2012-07-22 22:53 micky.zhou 阅读(301) 评论(0) 推荐(0) 编辑

2012年7月21日

gdb的使用

摘要: 官方地址 GDB: The GNU Project DebuggerLinux 包含了一个叫gdb 的GNU 调试程序。gdb 是一个用来调试C和C++程序的强力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。以下是 gdb 所提供的一些功能:它使你能监视你程序中变量的值、它使你能设置断点以使程序在指定的代码行上停止执行、它使你能一行行的执行你的代码。在命令行上键入 gdb并按回车键就可以运行gdb 了。(Windows需要安装MinGW或者CygWin并且需要配置环境变量才可以使用)GDB 命令行参数启动 GDB:l gdb executablel gdb -e execut 阅读全文

posted @ 2012-07-21 09:51 micky.zhou 阅读(623) 评论(0) 推荐(0) 编辑

导航