zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7806621.html
Copyright © 2011-2022 走看看