c++学习之——双冒号和单冒号的用法

C++里面双冒号和冒号及点号引用符的用法与区别

一、用双冒号的地方


1.在类外定义函数的时候,要用到void ClassName::FuntionName(pram){}

例如:声明了一个类A,类A里声明了一个函数 void f() ,但是没有在类的声明里给出函数 f () 的定义,那么在类外定义 f ()时,就要写成:

class A //声明一个类,其中有一个函数f()
    {
     public: 
        
       void f();
 
    };
 
void A :: f()//表示这个函数f()是类A的成员函数,注意这个成员函数的定义可以不在类声明的文件里,具体
             //具体看上一篇博文。
    {
    
      语句块;
 
    };


2.在定义类的静态变量的时候需要int ClassName::StaticValueName = 10;

静态变量(static).静态变量之所以是因为静态,是因为他在整个程序生命周期的地址静止不变。也就是说在整个程序里面只保存有一份拷贝。static关键字允许它在不同的函数调用间保持它的值。如果一个静态变量被访问后值改变,它就会保持新的值。如果这变量再次被访问,它将会维持最新的值
class A
{
public:
static int i;
private:
};
int A::i = 1; //必须这样初始化


3.利用类调用了的静态方法的时候ClassName::StaticFuntionName();


class Account
{
public:
  static double m_rate;//静态数据成员,类中声明
  static void set_rate(const double& x) {m_rate = x;}
};
double Account::m_rate = 8.0;//静态数据成员在类外初始化
 
int main()
{
  Account::set_rate(5.0);//通过class name调用static函数
 
  Account a;
  a.set_rate(7.0);//通过object调用static函数(因为静态成员函数中没有this pointer,才能如此调用)

 }

4.在引入命名空间的时候用到using std::vector;

 

 

二、用单冒号的地方


1.在类内的public:/private:/protected:

class Account
{
public:
  static double m_rate;//静态数据成员,类中声明
  static void set_rate(const double& x) {m_rate = x;}
};


2.在参数初始化列表的时候ClassName(pram):ValueName1(),ValueName2(){}

c++学习之——双冒号和单冒号的用法_第1张图片
3.在派生类的构造函数的书写的时候DerivedClassName(pram):BaseClassName(pram){}

class 派生类名 : 继承方式 基类名

{

派生类的成员

};

继承方式:public、private和protected,默认处理是public。
 

你可能感兴趣的:(c++学习)