c++中::和.区别

在C++中,"::"和"."都是用于访问类的成员(包括成员函数和成员变量)的运算符,但它们有一些重要的区别。

"::"被称为作用域解析运算符,用于访问全局作用域、命名空间和类的静态成员。例如,假设有一个名为"MyClass"的类,它有一个名为"myStaticVariable"的静态变量,那么可以使用"::"来访问它,如下所示:

MyClass::myStaticVariable;

另一个例子是,假设有一个名为"myNamespace"的命名空间,其中包含一个名为"myVariable"的变量,那么可以使用"::"来访问它,如下所示:

myNamespace::myVariable;

"."用于访问类的非静态成员。例如,假设有一个名为"MyClass"的类,它有一个名为"myMemberVariable"的非静态变量和一个名为"myMemberFunction()"的成员函数,那么可以使用"."来访问它们,如下所示:

MyClass obj;
obj.myMemberVariable;
obj.myMemberFunction();

需要注意的是,"."只能用于访问对象的成员,而"::"可以用于访问类和命名空间的静态成员,也可以用于访问全局作用域的变量和函数。

在C++中,静态变量是指在程序生命周期内只被初始化一次的变量。与普通变量不同,静态变量的生命周期与程序的整个运行期间相同,它们在程序开始运行时被初始化,在程序结束时被销毁。静态变量可以在函数内或类中定义。

在函数内部定义的静态变量将保持其值,直到程序退出为止,它们被初始化为零或与表达式相关的值,只在函数首次调用时进行初始化。例如,下面的代码定义了一个名为"count"的静态变量,它的值将一直保留在程序的整个运行期间:

void myFunction()
{
    static int count = 0; // 静态变量
    count++;
    std::cout << "count is: " << count << std::endl;
}

int main()
{
    myFunction(); // 输出 count is: 1
    myFunction(); // 输出 count is: 2
    myFunction(); // 输出 count is: 3
    return 0;
}

在类中定义的静态变量可以被所有类对象共享,它们的内存空间只在程序启动时分配一次,并且可以在类的成员函数之外进行初始化。例如,下面的代码定义了一个名为"count"的静态变量,它被所有MyClass对象共享:

#include <iostream>

class MyClass
{
public:
    static int count; // 静态变量
};

int MyClass::count = 0; // 在类外初始化静态变量

int main()
{
    MyClass obj1;
    MyClass obj2;

    obj1.count++;
    obj2.count++;

    std::cout << "obj1.count is: " << obj1.count << std::endl;
    std::cout << "obj2.count is: " << obj2.count << std::endl;
    std::cout << "MyClass::count is: " << MyClass::count << std::endl;

    return 0;
}

这个程序中,类MyClass定义了一个静态变量count,并在类外初始化为0。在main()函数中,创建了两个MyClass类的实例obj1obj2,并通过obj1.count++obj2.count++递增了静态变量count的值。

接着,程序使用std::cout输出了三个值:obj1.countobj2.countMyClass::count。由于静态变量是所有实例共享的,因此它们的值应该是相等的,都为2。运行程序后,输出应该是:

obj1.count is: 2
obj2.count is: 2
MyClass::count is: 2

最后,程序返回0表示正常结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值