重学C++系列之const与static关键字分析

这篇具有很好参考价值的文章主要介绍了重学C++系列之const与static关键字分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        本篇幅讲解关键字const与static,主要围绕在类的范围内叙述,包括作用和使用场景等。

一、const与static的作用

        1、const修饰的成员变量,成员变量初始化后不能再修改。

        2、const修饰的成员函数,成员函数不可以修改成员变量,也不能间接修改。

        3、static修饰的成员变量,变为静态成员变量,只能在类外初始化,由静态成员函数来操作。

        4、static修饰的成员函数,变为静态成员函数,用来操作静态成员变量,不能访问非静态成员变量和非静态成员函数。

二、使用场景

        1、const修饰成员变量,通常用于修饰一经初始化后,不能修改的变量(如学号,姓名)。

        2、const修饰成员函数,通常用于返回成员变量的函数。

        3、static修饰成员变量,通常用于所有类对象共享的变量,该静态成员变量在类中只有一个副本,

        4、static修饰成员函数,通常用于需要操作静态变量的成员函数。

三、案例

        1、const修饰成员变量

#include <iostream>

using namespace std;


class Test
{
private:
    int a;
    const int b;
public:
    // const 修饰的成员变量采用构造函数初始化列表的方式
    Test(int a = 0, const int b = 0):b(b)
    {
        this->a = a;
        // this->b = b; // 上面已经初始化了,这里不允许再次初始化
    }
    void show()
    {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
    }
};



int main()
{
    Test A(1, 10);
    A.show();

    return 0;
}

重学C++系列之const与static关键字分析,C++语言设计,c++

        2、const修饰成员函数

#include <iostream>

using namespace std;


class Test
{
private:
    int a;
    const int b;
public:
    // const 修饰的成员变量采用构造函数初始化列表的方式
    Test(int a = 0, const int b = 0):b(b)
    {
        this->a = a;
        // this->b = b; // 上面已经初始化了,这里不允许再次初始化
    }
    // 获取成员变量的函数通常用const修饰
    int getA()const
    {
        return a;
    }
    int getB()const
    {
        return b;
    }
};



int main()
{
    Test A(1, 10);
    cout << "A = " << A.getA() << endl;
    cout << "B = " << A.getB() << endl;

    return 0;
}

重学C++系列之const与static关键字分析,C++语言设计,c++

        3、static修饰成员变量和成员函数

#include <iostream>

using namespace std;


class Test
{
private:
    int a;
    const int b;
    static int c;   // 静态成员变量
public:
    // const 修饰的成员变量采用构造函数初始化列表的方式
    Test(int a = 0, const int b = 0):b(b)
    {
        this->a = a;
        c++;    
        // this->b = b; // 上面已经初始化了,这里不允许再次初始化
    }
    
    // 不能写成: static int getC()const, 静态成员函数不允许使用类型限定符
    static int getC()
    {
       
        return c;
    }
};

// 静态成员变量在类中声明,类外定义,定义时不需要加static
int Test::c = 0;


int main()
{
    Test A(1, 10);
    
    // 可以使用对象名.静态成员函数名来访问
    cout << "C = " << A.getC() << endl;

    Test B(2, 20);
    cout << "C = " << B.getC() << endl;

    // 可以使用类名::静态成员函数名来访问
    cout << "C = " << Test::getC() << endl;

    return 0;
}

重学C++系列之const与static关键字分析,C++语言设计,c++

        4、const和static共同修饰成员变量

#include <iostream>

using namespace std;


class Test
{
private:
    int a;
    const int b;
    const static int c;   // 用const来修饰静态成员变量
public:
    // const 修饰的成员变量采用构造函数初始化列表的方式
    Test(int a = 0, const int b = 0):b(b)
    {
        this->a = a;
        // c++;    // 静态成员变量不能修改
        // this->b = b; // 上面已经初始化了,这里不允许再次初始化
    }
    
    // 不能写成: static int getC()const, 静态成员函数不允许使用类型限定符
    static int getC()
    {
       
        return c;
    }
};

// 静态成员变量在类中声明,类外定义,定义时不需要加static
const int Test::c = 0;


int main()
{
    Test A(1, 10);
    
    // 可以使用对象名.静态成员函数名来访问
    cout << "C = " << A.getC() << endl;

    Test B(2, 20);
    cout << "C = " << B.getC() << endl;

    // 可以使用类名::静态成员函数名来访问
    cout << "C = " << Test::getC() << endl;

    return 0;
}

重学C++系列之const与static关键字分析,C++语言设计,c++

四、总结

        const与static关键字都可以修饰成员变量和函数,但是作用有所不同。如果是获取非静态成员变量的返回值的函数,通常用const来修饰,增加可读性。如果是用static来修饰成员变量,该成员变量变为静态成员变量,不属于任何类对象,只属于类,只有一个副本,类对象成员之间共享。文章来源地址https://www.toymoban.com/news/detail-609657.html

到了这里,关于重学C++系列之const与static关键字分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 详解const、static关键字

    详解const、static关键字

    目录   一、static 二、const 在c语言中: static是用来修饰变量和函数的         1.修饰局部变量——称为静态局部变量         2.修饰全局变量——称为静态全局变量         3.修饰函数——称为静态函数 有关内存相关知识补充: 程序的所有数据,也就是所有的

    2024年02月06日
    浏览(11)
  • C++ -- 学习系列 static 关键字的使用

    C++ -- 学习系列 static 关键字的使用

    static 是 C++ 中常用的,被 static 修饰的变量只会在 静态存储区 (常量数据也存放在这里) 被分配一次内存,生命周期与整个程序一样,随着程序的消亡而消亡。 1. 在文件中定义的 静态全局变量 2. 在函数中定义的静态变量 3. 类的静态成员变量 4. 静态类对象 5. 类的静

    2024年02月09日
    浏览(8)
  • 嵌入式C语言关键字(const、static、volitatile)

    C语言中const修饰通常是用来声明常量,并声明常量的值不能修改。当涉及 指针变量 时情况就会变得更加有趣,需要特别注意。因为有两样东西都有可能成为常量— 一种是用来限定指向的空间的值不可修改;另一种是限定指针不可修改 。下面是几个声明的例子: 总结:cons

    2024年02月06日
    浏览(10)
  • static,const,volatile,extern,register关键字深入解析

    static,const,volatile,extern,register关键字深入解析

    ✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:@rivencode的个人主页 🔥系列专栏:玩转C语言 💬保持学习、保持热爱、认真分享、一起进步!! 我们都知道一个源文件要生成我们计算机课执行的文件要经过: 源文件(test.c)—预编

    2023年04月08日
    浏览(9)
  • 【C++】C 语言 和 C++ 语言中 const 关键字分析 ( const 关键字左数右指原则 | C 语言中常量的原理和缺陷 | C++ 语言中常量原理 - 符号表存储常量 )

    【C++】C 语言 和 C++ 语言中 const 关键字分析 ( const 关键字左数右指原则 | C 语言中常量的原理和缺陷 | C++ 语言中常量原理 - 符号表存储常量 )

    【C 语言】const 用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 ) 普通类型数据的常量定义时 , const 在 数据类型 的 左边 和 右边 其作用 是相同的 ; 指针数据的相关常量类型 : const 在 指针符号

    2024年02月11日
    浏览(10)
  • C语言中volatile/register/const/static/extern/auto关键字的作用

    目录 一、volatile 二、register详解 三、const详解 四、static详解 五、extern详解 语法 作用 六、auto详解 突然想总结一下这些的作用,灵活使用这些对程序的可靠性和速率都有提高 volatile是防止编译器优化,如果是高频繁的变量编译器会自动将变量放到寄存器中,但是有的变

    2024年02月07日
    浏览(12)
  • c++关键字const

    C++中的const是一种常量修饰符。在变量、函数参数和成员函数中使用const可以限制其对数据的修改。 const修饰的数据在定义时必须进行初始化,且不能被修改,因此使用const可以提高代码的安全性和可读性。 在 C ++ 中, const修饰的成员函数表示该函数保证不会修改类的成员变量

    2024年01月19日
    浏览(13)
  • 【C++】const关键字的详解!!

    【C++】const关键字的详解!!

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 const是永恒不

    2024年02月03日
    浏览(10)
  • C++—static关键字详解

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 静态全局变量有以下特点: 1、该变量在全局数据区分配内存; 2、未经初始化的静态全局变量会被程序自动初始化为

    2024年02月15日
    浏览(10)
  • 【C++】static 关键字的特性 与 问题

    声明为 static的类成员 称为 类的静态成员 用 static 修饰的成员变量 ,称之为 静态成员变量 ; 用 static 修饰的成员函数 ,称之为 静态成员函数 。 静态成员变量 一定要在 类外进行初始化 。 下面一段代码证明 上述定义: 输出结果: 从代码可以看出,静态成员变量需要在 类

    2024年02月14日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包