您的位置:首页 > 编程语言 > C语言/C++

c++中:和::的用途

2015-06-03 12:11 246 查看
双冒号(::)用法

1、作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分

如:A,B表示两个类,在A,B中都有成员member。那么

      A::member就表示类A中的成员member

      B::member就表示类B中的成员member

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

char    zhou;    //全局变量

void    sleep()

{

char    zhou;    //局部变量

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

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

}
3、::是C++里的“作用域分解运算符”。比如声明了一个类A,类A里声明了一个成员函数voidf(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成voidA::f(),表示这个f()函数是类A的成员函数。例如:
class 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。
(以上部分转自http://www.cnblogs.com/charley_yang/archive/2011/02/24/1964217.html)
(以下部分转自http://blog.csdn.net/zimingjushi/article/details/6549390/)

冒号(:)用法

1、表示机构内位域的定义(即该变量占几个bit空间)
typedef struct _XXX{
unsigned char a:4;
unsigned char c;
} ; XXX


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


3、public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"public:”或"private:”出现为止。"private:"为默认处理。

4、类名冒号后面的是用来定义类的继承。
class 派生类名 : 继承方式 基类名
{
派生类的成员
};
继承方式:public、private和protected,默认处理是public。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: