c++ ::和:

单冒号:

(1)表示机构内位域的定义(即该变量占几个bit空间)

typedef struct _XXX{

          unsigned char a:4;

          unsigned char c;

} ; XXX

(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。

struct _XXX{

          _XXX() : y(0xc0) {}

};

    class myClass  
    {  
    public :  
      myClass();// 构造函数,无返回类型,可以有参数列表,这里省去  
      ~myClass();// 析构函数  
      int a;  
      const int b;  
    }  
    myClass::myClass():a(1),b(1)// 初始化列表  
    {  
    }  

(3)类名冒号后面的是用来定义类的继承

class 派生类名 : 继承方式 基类名

{

    派生类的成员

};

继承方式:public、private和protected,默认处理是public。

 

双冒号:

1.表示“域操作符”
例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 
就要写成void A::f(),表示这个f()函数是类A的成员函数。(caffe经常这样)

 

在我自己写的博客c++ cpp和hpp中的一个例子,.h文件如下:

#ifndef CIRCLE_H
#define CIRCLE_H

class Circle
{
private:
    double r;//半径
public:
    Circle();//构造函数
    Circle(double R);//构造函数
    double Area();//求面积函数
};

#endif

.cpp文件如下:

#include "Circle.h"

Circle::Circle()
{
    this->r=5.0;
}

Circle::Circle(double R)
{
    this->r=R;
}

double Circle:: Area()
{
    return 3.14*r*r;
}

声明了一个类A,类A里声明了一个成员函数voidf(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成voidA::f(),表示这个f()函数是类A的成员函数。

 


2.直接用在全局函数前,表示是全局函数

全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分如:

char    zhou;    //全局变量

void    sleep()

      char    zhou;    //局部变量

      char(局部变量) = char(局部变量) *char(局部变量) ; 

     ::char(全局变量) =::char(全局变量) *char(局部变量);

3.表示引用成员函数及变量,作用域成员运算符
作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分
如:A,B表示两个类,在A,B中都有成员member。那么
      A::member就表示类A中的成员member
      B::member就表示类B中的成员member

 

每个类都会定义自己的作用域,一个类就是一个作用域。

 

 

https://www.cnblogs.com/charley_yang/archive/2011/02/24/1964217.html

http://blog.csdn.net/wenskys/article/details/48996933

http://blog.csdn.net/kingcat666/article/details/44114685

posted @ 2017-11-08 22:24  有梦就要去实现他  阅读(2031)  评论(0编辑  收藏  举报