C++ 07 —— static

本文深入探讨了C++中静态成员变量与静态成员函数的概念及其使用特性。详细解释了静态局部变量与全局函数的作用域限制,以及静态成员变量的初始化时机。此外,还对比了静态成员函数与普通成员函数的不同调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码

// 07Static.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"

//1. static local var
class Test
{
public:
    Test()
    {
        cout << "constructor" << endl;
    }
    ~Test()
    {
        cout << "destructor" << endl;
    }
};

void fun()
{
    Test t1;
}
void fun2()
{
    static Test t2;
}
//问题:上例中,t1和t2何时构造?何时析构?

//2. static global function
static fun3()
{}

//问题:这个函数可以被本文件外的其他函数调用吗?

//3 static data member
class Test2
{
    int i;
    static int j;
public:
    //...
};

//问题:j是什么意义?何时、如何初始化?

//4. static function member

class Test3
{
    static int i;
    int j;
public:
    static void fun1()
    {
        i++;
    }
    void fun2()
    {
        j++;
    }
};

//问题:上例中,fun1可以如何调用?fun2可以是static吗?

int main(int argc, char* argv[])
{

    return 0;
}

问题:上例中,t1和t2何时构造?何时析构?

t1在调用时构造,在函数结束时析构。t2在程序开始时构造,在程序结束时析构。

问题:这个函数可以被本文件外的其他函数调用吗?

static修饰的全局函数只能在本文件里使用

问题:j是什么意义?何时、如何初始化?

j是一个类内的共享变量,在程序开始的时候初始化

问题:上例中,fun1可以如何调用?fun2可以是static吗?

可以用Test::fun1的方式调用,fun2不能,因为j不是静态对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值