这里以标准输入流cin为例。首先cin是一个对象,不会“返回”值,>>和<<才是方法,具有返回值。>>和<<操作符的运算顺序是从左向右,所以下面两种语句描述其实是一致的:cin >> a >> b >> c;
(((cin >> a) >> b) >> c)操作cin &...
成员函数是类的一部分,其定义与普通函数一样,没有特殊之处。但是需要注意以下一些特点:
编译器隐式的将在类内部定义的成员函数当做内联函数(不管有没有使用inline关键字)。
在成员函数的声明或定义处指定inline关键字都是合法的。
类的成员函数可以访问该类的private成员。
使用类的对象来调用类的成员函数,如果是静态成员函数,还可以使用类名加::符号来调用。
成员函...
C++和C一个不同的地方就是引入了引用(reference)这个概念,而且引用很容易和指针混淆。1. 指针C++中保留了指针,但其使用与C中是完全一样的,没有新增特性。所以这里不再赘述,只说一些使用时的注意点。更详细的内容可以看我的另外一片博客《解读C指针》。(1)每个指针都有一个与之关联的数据类型,该数据类型决定了指针所指向的对象的类型。(2)一个有效的指针必然是下面三种状态之一:
保...
好久都没有使用C++写过代码了,一直都在用C或者一些脚本语言。最近似乎因为工作需要,又要用C++了,觉得有必要再翻一遍《C++ Primer》,重温一下C++中有但C中没有的特性了。1. 输出流与输入流输出流: std::cout << "print to stream" << std::endl;输入流: std::cin >> v1;endl是一个特殊...
我们在C代码中经常会使用#define去定义宏。在Linux内核代码或是一些比较大型的C项目中,我们经常会见到类似“do {...} while (0)”的宏。那么这样写到底是为什么呢?其实原因很简单——为了避免在不同场景中宏替换产生错误。我们都知道宏在代码预处理阶段会被展开,而这个展开就是简单的文本替换。这里是非常容易出错的。下面我们举一些例子来说明。定义下面宏:#define foo(x...
不论是多进程还是多线程程序设计中,进程或线程同步是一个非常重要的点。这里我们介绍Linux C线程同步的三种方法:
互斥量(mutex)
读写锁
条件变量
1. 互斥量互斥量本质上是一把锁,在访问共享资源前对共享资源加锁,在访问完以后释放互斥量上的锁。互斥量用pthread_mutex_t数据类型来表示,在使用互斥变量之前,必须首先对它进行初始化,可以把它置为常量PTHR...
NB:标准C是没有线程支持的,要在C中使用多线程,需要使用POSIX接口。本文介绍POSIX 多线程的基本函数。1. pthread_create函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);函数功能:创建新...
1. typedef的用法在C/C++中,typedef常用来定义一个标识符或关键字的别名,它是语言编译的一部分,但它并不实际分配内存空间。比如:typedef int INT;
typedef int ARRAY[10];
typedef (int*) pInt;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。2. #define的用法#define...
- « 前一页
- 1
- ...
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- ...
- 13
- 后一页 »