- 冒号(:)的用法
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++相关的一些理解所列出来的冒号于双冒号之间的区别,可能还有一些区别是我没有接触到的,所以也就没有在上述中表述出来,还望见谅。同时,如果以上有什么错的地方的话,还望各位大神多多指点。