C++函数占用整数,但示例显示文本?

Spa*_*cey 0 c++ int bit-manipulation function

这是一个令我困惑的C++问题.(很长一段时间后,我正在刷新我的C++).我在这里读这个例子.有两个部分让我困惑:

第一部分:

在代码行中:

void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )
Run Code Online (Sandbox Code Playgroud)

WINDOW_AUTOSIZE是一个输入,但据我所知,它不是一个int.当我编写这行并运行时,它工作正常.我对这个函数的输入字面意思是'WINDOW_AUTOSIZE'.我很困惑为什么这样做.WINDOW_AUTOSIZE如何成为一个int?

我的第二个问题是关于最后一行,他们说:

默认情况下,flags == CV_WINDOW_AUTOSIZE | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED

我很困惑这怎么/这意味着什么......我知道那个| 是一个按位OR,但不清楚这意味着什么...

谢谢.

Adr*_*ian 5

用大写字母书写的单词是常数.它们已在代码或标题中的某处定义,以便在其他位置使用.常量可以代表数字,字符串等.此代码中的常量显然属于类型int

CV_WINDOW_AUTOSIZE | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED只是int常量代表的值的按位OR .这些是空间常量,其中只有一位int被设置(所谓的标志)

假设CV_WINDOW_AUTOSIZE是0x1并且CV_WINDOW_KEEPRATIO是0x2.因此按位OR运会产生0x3.然后被调用的函数可以通过AND操作检查设置了哪个标志.