C++ 在声明对象之后::是什么意思?
完成后,我正在尝试做一些hello world的事情。我试着做的第一件事是直接在屏幕上画画,没有窗口。我找到了,而且很有效C++ 在声明对象之后::是什么意思?,c++,C++,完成后,我正在尝试做一些hello world的事情。我试着做的第一件事是直接在屏幕上画画,没有窗口。我找到了,而且很有效 #include "stdafx.h" #include <Windows.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HDC screenDC = ::GetDC(0); ::Rectangle(screenD
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HDC screenDC = ::GetDC(0);
::Rectangle(screenDC, 200, 200, 300, 300);
int exit; cin >> exit;
return 0;
}
矩形的成员是什么
如果你不介意的话,我还有一些可能很简单的问题。如果没有,就别担心
- 只要我的矩形上有一个窗口移动,它就会消失。有没有回电话让我知道这件事,以便我可以重新油漆
- 如何更改矩形的颜色
- 我可以去哪里了解这些?我找到的每一篇教程都很稀少,而且大部分都已经过时了。如果我需要的话,我可以买本书。尝试过以下方法(有时成功,有时失败):
:
类似于访问全局命名空间。这是名称空间解析。如果愿意,您可以直接删除那些:
,它们是多余的碎屑。:
是范围解析操作符
scope::name
表示使用名为scope
的类或命名空间中声明的名称
::name
表示使用全局命名空间中声明的名称。通常,它是可选的;但有时,如果当前作用域中存在同名的其他内容,则需要它。:
是作用域解析运算符<代码>::标识符将引用全局命名空间中的任何内容。然而,这并不总是必要的。只有当不使用它会导致歧义时才真正需要它:
int i = 0;
void func() {
int i = 0;
::i = 1; // This will set the global i
i = 1; // This will set the local i
}
(注意:我不以任何方式支持globals)::用于访问类或名称空间中的内容。(在本例中,情况并非如此。) 因此,如果您有一个带有静态方法栏的类Foo,您可以这样调用它
Foo::Bar()代码>
另外,如果您有一个名称空间MyLibrary,其中有一个函数printpresttyThings,您可以这样调用它:
MyLibrary::PrintPrettyThings()代码>
如果你在某处有另一个功能条,并且你在一个Foo方法中,你可以使用它
::Bar()代码>调用FO之外的条,否则您将只调用Fo::Bar。顺便说一下,C++教程绝不是“标准”。这是范围解析运算符。在这种情况下,::Rectangle
意味着函数Rectangle
存在于全局名称空间中。最好使用最上面的全屏彩色键窗口,而不是在屏幕上绘制。使用CreateSolidBrush
将其选择到DC或其他可以改变颜色的东西中(MSDN上有很多关于GDI的信息),Petzold的书非常棒。请不要添加与原始问题无关的其他问题-为这些项目创建新问题。您可以将它们放到这里;但有时你需要它们来解决歧义。好吧,在这种情况下,你可以放弃它们。但是,如果您当前位于另一个名称空间中,该名称空间中也有相同的名称,那么只写符号名称将是不明确的。具体来说,:
是最重要的。@Caleb:是的,我想我应该提到这一点。我假设OP知道它是什么(因为他问“什么是一个成员?”),但完整性很好。
int i = 0;
void func() {
int i = 0;
::i = 1; // This will set the global i
i = 1; // This will set the local i
}