繁体   English   中英

声明对象后::是什么意思?

[英]What does :: mean after declaring an object?

在完成标准的c ++教程之后,我正在尝试做一些世界性的事情。 我尝试做的第一件事是在没有窗口的情况下直接在屏幕上绘制。 我发现了这一点 ,并且有效。

#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;
}

在此处输入图片说明

但是在标准的c ++教程中,它没有涵盖任何此类内容

HDC screenDC = ::GetDC(0);
::Rectangle(screenDC, 800, 200, 300, 300);

Rectangle的成员是什么?


如果您不介意,我还有其他一些可能很简单的问题。 如果没有,不用担心。

::是作用域解析运算符。

scope::name表示使用在类或命名空间中声明的名称,称为scope

::name表示使用在全局命名空间中声明的名称。 通常,它是可选的。 但是有时候,如果当前范围中还有其他同名的东西,则需要使用它。

::访问全局名称空间。 这是名称空间解析。 您可以将那些::放下,如果您愿意,它们会变得很破旧。

::是作用域解析运算符。 ::Identifier将引用全局名称空间中的任何内容。 然而,并非总是必要的。 仅在使用时才真正需要它会引起歧义:

int i = 0;

void func() {
    int i = 0;

    ::i = 1; // This will set the global i
    i = 1; // This will set the local i
}

(注意:我不以任何方式认可全局变量)

::用于访问类或名称空间中的内容。 (或者在这种情况下,不是。)

因此,如果您有一个带有静态方法栏的Foo类,则可以这样调用它: Foo::Bar();

另外,如果您有一个带有函数PrintPrettyThings的命名空间MyLibrary,则可以这样调用它: MyLibrary::PrintPrettyThings();

如果您在某处还有另一个功能Bar并且在Foo方法内部,则可以使用::Bar(); 调用位于Foo之外的Bar,否则您将仅调用Foo :: Bar。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM