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

  • 相关阅读:
    linux 下查看网速的方法 (不需要安装任何软件)
    Raspberry Pi Kernel Compilation 内核编译官方文档
    Kernel compiling for Pi 2
    从源码编译rpi的内核
    设备驱动调试和移植的一般方法
    爸爸的歌
    表扬?批评?
    日历插件js,jquery
    zepto jquery和zepto的区别?
    怎么学习PS快?
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7806621.html
Copyright © 2011-2022 走看看