std :: cout的功能是什么?它类似于简单的cout吗?

时间:2018-06-30 18:28:20

标签: c++

我是编程新手,我无法弄清std :: << strong> >的含义。

实际上我想问一下 std :: 部分在这里做什么以及它表示什么?

1 个答案:

答案 0 :(得分:1)

哦,你刚从C++开始。
因此,让我们从std::部分开始。这称为名称空间。命名空间有时会让人感到困惑,但它们非常有用。
命名空间只是一个小容器,可以将classenumsturct和所有其他所有内容都放在一个地方。

它们为什么有用? 好吧,例如,如果您正在编写绘画程序并且该程序正在与图形交互,则两者都可能包含名为colorpoint的类。如果您没有名称空间,那么不可能

然后是cout部分。 coutstd命名空间中的实际类,有点像上面示例中的Color类。因此,作为示例,下面是paintgrahpics的简化示例:

namespace paint {
    class Point {
        private:
           Color color;
           int x, y;
        public:
           Point(Color c, int xx, int yy) : x(xx), y(yy), color(c) {
           }
           // Continued code...
    };

    class Color {
        private :
            int red, green, blue;
        public:
            Color(int r, int g, int b) : red (r), green (g), blue (b) {
            }
            // Continued code...
    };
}

和GUI:

namespace gui {
    class Window {
        private :
            Point position;
            int width, height;
            Color background_color;

        public:
            Window(Point p, int w, int h, Color b) : position (p), width (w), height (h), background_color (b) {
             }
    };

    class Color {
        private:
            Color_type c;
            Point point;

        public
            enum Color_type {
                red=0xff0000, green=0xff00, blue=0xff, white=~0x0, black=0x0
            };  

            Color(Color_type cc, Point p) :c(cc), point(p) { } 
            // Continued code...
    };

    class Point {
        private:
            int x, y;

        public:
            Point(int xx, int yy) : x(xx), y(yy) {
            }
            // Continued code...
    };
}

因此,如您所见,您可以拥有名称空间来封装具有相同名称的不同类。
如何使用它们容易
您只需在名称空间前面添加名称空间的名称(例如paint::colorgui::color)。这是一个示例:

int main (void) {
    paint::Point paint_p(Color(2,2,2), 55, 33);
 p(55, 33);

    // or

    paint::Color paint_c(0, 0, 0); // Produces black;
    gui::Color gui_c(gui::Color_type::black);
}

总而言之, <something> 是类名或变量名,或者是嵌套的名称空间(名称空间内的名称空间),但是对于cout,它是是类的名称。

我希望这能解释它。