C++中:和::区别和用法的一些总结

  • 冒号(:)的用法

1、既定义变量所占的大小

例如: unsigned char a:4;  

2、public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,例如:

class A
{
    public:
        int a;
    private:
        int b;
}

3、类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。

#include <iostream>
 
class CTestA
{

public:
CTestA():m_iSIZE(20) 
{
}

~CTestA()          //析构函数
{
}
 
int GetSize()
{
return m_iSIZE;
}
 
private:
const int m_iSIZE;
};

4、类名冒号后面的是用来定义类的继承。

#include <iostream>

class A
{
    public:
        int A_a;
    private:
        int A_b;
};


class B:A
{
    public:
        int B_a;
    private:
        int B_b;
}

5、条件语句(A?B:C)

if(A)
{
    return B;
}
else
{
    return C;
}
  • 双冒号(::)的用法

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

#include <iostream>

class A
{
public:
	void f();
};

void A::f()
{
	std::cout << "HqyD" << std::endl;
}

void main()
{
	A a;
	a.f();
}

2、用在全局函数前,表示是全局函数

例如:在API函数前加入::表示该函数为全局函数

3、表示引用成员函数及变量

例如:std::cout << "HqyD" << std::endl;  //即表示引用了std 中的成员cout 以及 endl;

例如:System::Math::Sqrt() 相当于System.Math.Sqrt()

彩蛋: 那这个 a::b():c 是什么意思呢? 构造函数后面紧跟着冒号加初始化列表,各初始化变量之间以逗号隔开。

class a{
    public:
      a();
      ~a();
      int c;
      const int d;
};

a::a():c(10),d(20)   //初始化列表的顺序要和定义的顺序相同
{
        // 表示给b()中定义了一个变量c和变量d,并且对c和d进行了赋值10,20;
}

4、还遇到一中用法,也是引用当前类中的成员变量,只是这个可以单独说一下;

class A{
    public:
        int a = 10;
        int add(int a);
};

int A::add(int arg)
{
    return arg + ::a;  // 这里的 ::a 就是直接调用的A 类中成员变量 a;
}

总结:以上的只是我对C++相关的一些理解所列出来的冒号于双冒号之间的区别,可能还有一些区别是我没有接触到的,所以也就没有在上述中表述出来,还望见谅。同时,如果以上有什么错的地方的话,还望各位大神多多指点。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值