关闭

关于const int*, int const*以及int *const的区别

使用C++也有些年了,这个语言确实有诸多繁琐和变态的地方,比如这次要说明的const int*、int const*以及int *const的区别就是一例。相信不少同学都会对这其中的差异表示不解,我尝试着用一段代码来对他们进行区别。         先用上一篇文章中提到的助记方法(从变量名开始从右往左读)来理解一下这三者的字面意思:         const int* ip;    // i...
阅读(6093) 评论(0)

关于const与指针混合使用的助记法

助记方法:把一个声明从右向左读 比如: 1.        char * const cp;  //cp is a const pointer to char 2.        const char * cp;  //cp is a pointer to const char;   规则: ¨  声明从右到左读: ¨  * 读成 pointer to ¨  ** 读成 (...
阅读(449) 评论(0)

C语言中的复杂声明和定义,以及如何使用typedef进行简化

在阅读Linux的内核代码是经常会遇到一些复杂的声明和定义,诸如:         (1)  void * (* (*fp1) (int)) [10];         (2)  float (* (*fp2) (int, int, float)) (int);         (3)  typedef double (* (* (*fp3) ()) [10] ();...
阅读(1602) 评论(3)

Centos 安装五笔

【转自:http://www.cnblogs.com/emyueguang/p/3789212.html】 Centos安装五笔步骤: Ctrl + Alt + [F2 - F6]进入控制台模式f2 - f6是五个控制台。进入之后用Alt + [F2 - F6]来切换不同的控制台。输入root / 密码# yum list | grep wubi,使用这个命令来看看有哪些可以安装的...
阅读(350) 评论(0)

C++智能指针详解

一、简介         由于C++语言没有自动内存回收机制,程序员每次new出来的内在都要手动delete。程序员忘记delete;流程太复杂导致没有delete;异常导致程序过早退出,没有执行delete的情况并不罕见。         用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::s...
阅读(314) 评论(0)

Linux异步I/O

Linux中最常用的输入/输出(I/O)模型是同步I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待I/O请求完成时不需要占用任何CPU时间。但是在某些情况中,I/O请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,我们将对这个API概要进行介绍...
阅读(384) 评论(0)

Windows支持的4种类型的同步对象:临界区、互斥量、事件和信号量

Windows支持4种类型的同步对象,可以用来同步由并发运行的线程所执行的操作: 临界区互斥量事件信号量     MFC在名为CCriticalSection、CMutex、CEvent和CSemaphore的类中封装了这些对象。下面分别对这些同步对象进行介绍。 临界区     最简单类型的线程同步对象就是临界区。临界区用来串行化对由两个或者多个线程共享的资源的访问。这些线程必须属...
阅读(1206) 评论(0)

关于C++两个类相互引用的一点思考

昨天跟朋友讨论了一下在C++中如果出现两个类相互引用的情况,编译无法通过的问题如何解决: // A.h #ifndef A_H #define A_H #include "B.h" class A { B b; }; #endif A_H // B.h #ifndef B_H #define B_H #include "B.h" class B { A a...
阅读(1217) 评论(0)

C++:overload, override和overwrite

Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。 (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 Override(覆盖):是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相...
阅读(411) 评论(0)

构造函数为什么不能是虚函数?

1.  从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。 2.  从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身...
阅读(381) 评论(0)

MYSQL问题解决方案:安装过程中无法start service...

在my.ini中[mysqld]加入以下配置项: tmpdir=d:\mysqltemp(目录可自己确定),并且确定该目录已经建立。 在服务中启动MySQL56,成功……...
阅读(532) 评论(0)

MYSQL问题解决方案:Access denied for user 'root'@'localhost' (using password:YES)

这两天在MyEclipse中开发Web项目时,连接MYSQL数据库,出现问题:Access denied for user 'root'@'localhost' (using password:YES)。         经查找资料发现是root帐户默认不开放远程访问权限,所以需要修改一下相关权限。       解决方案: 打开MySQL目录下的my.ini文件,在文件的最后...
阅读(117764) 评论(22)

C++:公有继承、私有继承和保护继承

在C++中有三种继承方式:公有继承(public)、私有继承(private)和保护继承(protected)。 1. 公有继承(public) 公有继承:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。 2. 私有继承(private) 私有继承:基类的公有成员和保护成员都作为派生类的私有成员,并且...
阅读(563) 评论(0)

关于VS中静态调用dll的一些问题

在静态调用dll时,只需要在代码中加入 #pragma comment(lib, "E:\\test.lib") 就可以正确编译,而只有程序运行时才会载入相应的test.dll。为了方便调试,通常希望直接调用Debug目录下的库文件,如E:\test\debug,以便于在库函数调用时可单步调试。 #pragma comment(lib, "E:\\test\\debug\\tes...
阅读(2468) 评论(0)

函数调用规范

当高级语言函数被编译成机器码时,有一个问题就必须解决:CPU没有办法知道一个函数调用需要多少个、什么样的参数(即计算机不知道怎么给这个函数传递参数),传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。         函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,由调用者(Ca...
阅读(482) 评论(0)
123条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:411116次
    • 积分:3765
    • 等级:
    • 排名:第9457名
    • 原创:59篇
    • 转载:61篇
    • 译文:3篇
    • 评论:49条
    文章分类
    最新评论