C++的双冒号:: c++ “::”在C++中表示作用域和所属关系。”::”是运算符中等级最高的,它分为三种,分别如下: 一、作用域符号:作用域符号”::“的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。 例如:A,B表示两个类,在A,B中都有成员member。 那么: 1、A::member就表示类A中的成员member。 2、B::member就表示类B中的成员member。 二、全局作用域符号:全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分,例如: 1234567891011121314151617class MinStack {public: stack<long long> data, min_d; MinStack() { min_d.push((long long)1 << 40); } void push(int x) { data.push(x); min_d.push(::min(min_d.top(), (long long)x));//::min因为类里面有一个min函数,直接使用min的话会调用类中的函数,加上::后调用的是全局的min函数。 } int min() { return min_d.top(); }}; 三、作用域分解运算符:::是C++里的作用域分解运算符,“比如声明了一个类A,类A里声明了一个成员函数voidf(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成voidA::f(),表示这个f()函数是类A的成员函数。例如: 12345678910111213141516class CA{public: int ca_var; int add(int a, int b); int add(int a);};//那么在实现这个函数时,必须这样书写int CA::add(int a, int b){ return a + b;}//另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示,比如:int CA::add(int a){ return a + ::ca_var;//表示当前实例中的变量ca_var} #C++#双冒号 Newer C++中的max_element与min_element Older C++标准库之栈(stack)和队列(queue)