C++标准I/O返回值问题

这里以标准输入流cin为例。首先cin是一个对象,不会“返回”值,>>和<<才是方法,具有返回值。>>和<<操作符的运算顺序是从左向右,所以下面两种语句描述其实是一致的:cin >> a >> b >> c; (((cin >> a) >> b) >> c)操作cin &...

C++的const成员函数和this指针以及mutable关键字

成员函数是类的一部分,其定义与普通函数一样,没有特殊之处。但是需要注意以下一些特点: 编译器隐式的将在类内部定义的成员函数当做内联函数(不管有没有使用inline关键字)。 在成员函数的声明或定义处指定inline关键字都是合法的。 类的成员函数可以访问该类的private成员。 使用类的对象来调用类的成员函数,如果是静态成员函数,还可以使用类名加::符号来调用。 成员函...

重温C++的指针和引用

C++和C一个不同的地方就是引入了引用(reference)这个概念,而且引用很容易和指针混淆。1. 指针C++中保留了指针,但其使用与C中是完全一样的,没有新增特性。所以这里不再赘述,只说一些使用时的注意点。更详细的内容可以看我的另外一片博客《解读C指针》。(1)每个指针都有一个与之关联的数据类型,该数据类型决定了指针所指向的对象的类型。(2)一个有效的指针必然是下面三种状态之一: 保...

重温C++的一些基础概念

好久都没有使用C++写过代码了,一直都在用C或者一些脚本语言。最近似乎因为工作需要,又要用C++了,觉得有必要再翻一遍《C++ Primer》,重温一下C++中有但C中没有的特性了。1. 输出流与输入流输出流: std::cout << "print to stream" << std::endl;输入流: std::cin >> v1;endl是一个特殊...

do {...} while (0)宏的用法

我们在C代码中经常会使用#define去定义宏。在Linux内核代码或是一些比较大型的C项目中,我们经常会见到类似“do {...} while (0)”的宏。那么这样写到底是为什么呢?其实原因很简单——为了避免在不同场景中宏替换产生错误。我们都知道宏在代码预处理阶段会被展开,而这个展开就是简单的文本替换。这里是非常容易出错的。下面我们举一些例子来说明。定义下面宏:#define foo(x...

Linux C线程(2)——线程同步

不论是多进程还是多线程程序设计中,进程或线程同步是一个非常重要的点。这里我们介绍Linux C线程同步的三种方法: 互斥量(mutex) 读写锁 条件变量 1. 互斥量互斥量本质上是一把锁,在访问共享资源前对共享资源加锁,在访问完以后释放互斥量上的锁。互斥量用pthread_mutex_t数据类型来表示,在使用互斥变量之前,必须首先对它进行初始化,可以把它置为常量PTHR...

Linux C线程(1)——基本函数

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);函数功能:创建新...

typedef和#define的用法与区别

1. typedef的用法在C/C++中,typedef常用来定义一个标识符或关键字的别名,它是语言编译的一部分,但它并不实际分配内存空间。比如:typedef int INT; typedef int ARRAY[10]; typedef (int*) pInt;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。2. #define的用法#define...
News
歇业...
最近评论
纳兹很强,流程很清楚
勇往直前Yarn管理的资源,在Flink WebUI 上提交的Job好像只能使用Session Clu...
1感谢
王桑~自问自答:Job的提交过程:下载应用所需的依赖执行main()方法提取 job graph将依...
王桑~您好,请教个问题flink 1.11后,引入了application mode,这个模是在集群...
称呼你还会打羽毛球?
二里庄本狱友前来观摩了
王叔叔纠正博主一个错误一般生产环境比较推荐Session ClusterJob Cluster用的比...
王叔叔文字写的真棒,是近几个月看过的最好的技术博客。博主原来也在菊花厂待过,也算是狱友了,祝好~
lay为什么两次心率会差这么多呢