首页 > 编程语言 >C++静态成员变量和静态成员函数的使用

C++静态成员变量和静态成员函数的使用

时间:2024-10-21 14:44:08浏览次数:7  
标签:变量 mystaitcClass 静态 成员 C++ int id

1.静态成员变量:定义在类中的静态成员,以static关键字初始化

和成员变量区别:a.可以通过类名::变量名进行调用,可访问性还是由(public,private,protected)进行限制  例如下面的

mystaitcClass::_id,protected属性内容无法直接进行访问,若要直接访问需要修改为public

2.静态成员函数:类似可以通过类名::函数名 进行调用

 

#ifndef MYSTAITCCLASS_H
#define MYSTAITCCLASS_H


class mystaitcClass
{
public:
    mystaitcClass();

    static int getID();
protected:
    static int _id;
};

#endif // MYSTAITCCLASS_H

 

#include "mystaitcclass.h"
int mystaitcClass::_id = 1;
mystaitcClass::mystaitcClass()
{

}

int mystaitcClass::getID()
{
    if (_id <= 255 && _id >= 1)
    {
        _id++;
    }
    else
    {
        _id = 1;
    }

    return _id;
}
#include <QCoreApplication>
#include <QDebug>
#include"mystaitcclass.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    mystaitcClass myclass1;
    mystaitcClass myclass2;
    //mystaitcClass::_id
    qDebug()<<myclass1.getID()<<endl;
    qDebug()<<myclass2.getID()<<endl;
    return a.exec();
}

 

注意:静态变量初始化问题

如果头文件被多个文件引用,静态变量不能初始化在头文件中而应在cpp文件中初始化,否则会造成变量重定义

标签:变量,mystaitcClass,静态,成员,C++,int,id
From: https://www.cnblogs.com/bang20221103/p/18489449

相关文章

  • 高效并行计算:使用C++中的std::thread实现多线程编程
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在现代计算中,随着多核处理器的普及,如何充分利用硬件资源以提升程序性能成为关键问题之一。C++标准库提供了丰富的多线程支持,其中std::thread是用于实现并发计算的核心工具之一。通过合理的多线程设计,程序可以实现......
  • 用C++构建自己的编译器:从词法分析到代码生成
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界本文将带领读者从零开始构建一个简单的C++编译器。我们将逐步讲解如何进行词法分析、语法分析,以及如何将这些结果转换为目标代码。这篇文章的目标是帮助读者理解编译器的基本构成和工作原理,并提供可扩展的编译器......
  • 高精度乘法C++
    1.高精度乘高精度的简单算法思想:倒置相乘,统一处理进位,还原。复杂度:$o(n^2)$//BySnowDream#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+10;strings1,s2;intn1[N],n2[N],n3[N];//n1储存被乘数,n2储存乘数,n3储存积voidmul(){......
  • HTML静态网页成品作业(HTML+CSS)——中华传统美德介绍网页(2个页面)
    ......
  • C++基础与实用技巧第三课:内存管理与性能优化
    第二章:C++基础与实用技巧第三课:内存管理与性能优化1.动态内存的管理策略与技巧动态内存管理是C++编程的核心部分之一,合理管理内存可以极大提高程序的性能和稳定性。在C++中,动态内存的分配和释放通常使用new和delete运算符,但由于手动管理内存容易引入错误,因此建议使用现代C+......
  • 【c++篇】:解析c++类--优化编程的关键所在(一)
    文章目录前言一.面向过程和面向对象二.c++中的类1.类的引入2.类的定义3.类的封装和访问限定符4.类的作用域5.类的实例化6.类对象模型三.`this`指针1.`this`指针的引出2.`this`指针的特性3.C语言和c++实现栈Stack的对比前言在程序设计的广袤宇宙中,C++以其强大的功能......
  • C++回调
    目录1、回调(callback):函数指针回调:函数对象回调:Lambda表达式回调:2、对象绑定器(Binders):3、包装器(Wrappers):1、回调(callback):在C++中,回调(callback)是指一种将一个函数作为参数传递给另一个函数,并在该函数执行的过程中执行传递进来的函数的机制。回调通常用于实现一种灵活的、可扩展的......
  • C++ constexp vs const
    C++constexpvsconstconstexpr是在C++11标准中引入的关键字,目的是为编译时常量提供更强大的支持。它允许某些表达式在编译期进行求值,从而提高性能和优化能力。下面详细说明它与const的区别。constexpr和const的区别特性constexprconst引入版本C++11C++......
  • Chromium 中chrome.contextMenus扩展接口实现分析c++
    一、chrome.contextMenus使用 chrome.contextMenus API向GoogleChrome的上下文菜单中添加项。您可以选择从右键菜单中添加的对象类型,例如图片、超链接和页面。权限contextMenus您必须在扩展程序的清单中声明 "contextMenus" 权限,才能使用该API。此外,您应指定一个......
  • 【蓝桥杯】C++ 第20场 小白入门赛
    一、四个亲戚题目四个亲戚 题目分析字面意思:Daiyu+‘kind’代码#include<iostream>usingnamespacestd;intmain(){cout<<"Daiyu'kind'";return0;}二、黛玉泡茶题目黛玉泡茶 题目分析1.我们可以c2.然后c3.计算c,如果不能,整除后的答案还要加1 ......