首页 > 编程语言 >大二上 C++高级程序设计笔记(1) 栈和c++对c的补充 20240908

大二上 C++高级程序设计笔记(1) 栈和c++对c的补充 20240908

时间:2024-09-08 17:35:46浏览次数:3  
标签:count 20240908 静态 成员 C++ static c++ MyClass 变量

Q1:什么是static类的储存变量?

A1:在C++中,static关键字可以用于类成员变量和成员函数,以改变其作用域和生命周期。当static用于类的成员变量时,它具有以下特性:

  1. 全局唯一性:静态成员变量不属于任何特定的对象实例,而是属于类本身。这意味着无论创建多少个类的对象,静态成员变量都只有一个实例。

  2. 初始化时机:静态成员变量在程序开始运行时就分配内存和初始化(在main函数执行之前),而不是在创建对象时。

  3. 访问方式:静态成员变量可以通过类名直接访问,也可以通过对象访问。例如,如果有一个静态成员变量static int count;,可以通过ClassName::countobjectName.count来访问。

  4. 生命周期:静态成员变量的生命周期与程序的运行周期相同,从程序开始运行到程序结束。

  5. 线程安全:在多线程环境中,静态成员变量的访问可能需要考虑线程安全问题,因为多个线程可能会同时访问同一个静态成员变量。

  6. 存储位置:静态成员变量存储在全局数据区,而不是对象的内存块中。

下面是一个简单的示例,展示如何在C++中使用静态成员变量:

class MyClass {
public:
    static int count;  // 静态成员变量声明
    MyClass() {
        count++;  // 每次创建对象时,count增加
    }
};

// 静态成员变量的定义和初始化
int MyClass::count = 0;

int main() {
    MyClass obj1;
    MyClass obj2;
    MyClass obj3;

    std::cout << "Total objects created: " << MyClass::count << std::endl;
    return 0;
}

在这个例子中,count是一个静态成员变量,用于跟踪创建了多少个MyClass的对象。每次创建新对象时,count都会增加。通过MyClass::count可以直接访问这个变量。

标签:count,20240908,静态,成员,C++,static,c++,MyClass,变量
From: https://www.cnblogs.com/landboat/p/18403170

相关文章

  • 【C++ Primer Plus习题】12.6
    1大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←问题:解答:main.cpp#include<iostream>#include<cstdlib>#include<ctime>#include"queue.h"using......
  • 【C++ Primer Plus习题】12.5
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←问题:解答:main.cpp#include<iostream>#include<cstdlib>#include<ctime>#include"queue.h......
  • 【C++11及其特性】智能指针——shared_ptr
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←shared_ptr目录一.共享性智能指针二.shared_ptr的共享原理三.shared_ptr的构造函数1.普通的2.数组的3.带删除器......
  • 【C++】智能指针
    目录1.智能指针简介2. std::unique_ptr2.1.特点2.2.使用示例3. std::shared_ptr3.1.特点3.2.使用示例4. std::weak_ptr4.1.特点4.2.使用示例5.使用智能指针的注意事项5.1.选择合适的智能指针类型5.2.避免循环引用5.3.谨慎使用自定义删除器5.4.注......
  • Linux 下 C/C++ 程序编译的过程
    目录一、GCC工具链二、编译过程1、预处理2、编译3、汇编4、链接本文将介绍如何将C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)。在此之前,首先来看一下GCC工具链。......
  • C++11/14/17/20 新特性反汇编分析1
    区间for迭代类似于java中的foreach看个例子:数组的区间for迭代我们从第一行开始看,首先把数组a的地址放到eax中,再把eax的值放到[ebp-28h]中,也就是[ebp-28h]存储了元素的首地址,同理[ebp-34h]也存了a的首地址(这里猜测可能是多个变......
  • c++IOS优化【原创】
    这一期,我们来讲IOS优化,上一期讲了GCC的优化,这次给大家带来的是IOS优化,代码如下。ios::sync_stdio(0),cin.tie(),cout.tie();ios::sync_with_stdio(0):默认情况下,C++的标准输入输出流(cin/cout)会与C语言的标准输入输出流(scanf/printf)同步。这可能会导致一些性能开销。当使用......
  • 状压DP(c++)
    好久都没来水博客了,现在闲的来写一篇刚学的状压DP思想状压DP要把一个集合中的所有元素一一分别拿出来讨论,需要用到二进制保存集合状态例如110001010二进制,0代表没有,1代表有这个元素876543210他的位置所有状压dp差不多就一个思想逐步将集合中的点包含进来首先引入一道题......
  • C++STL之stack和queue容器适配器:基本使用及模拟实现
    目录stack的介绍和使用stack的介绍stack的使用queue的介绍和使用queue的介绍queue的使用priority_queue的介绍和使用priority_queue的介绍priority_queue的使用deque双端队列(容器)deque的介绍及使用deque的缺点deque的原理(了解)容器适配器概念stack和queue的......
  • 20240908
    T1NFLSOJ服装考虑逐次确定每个人。从前往后枚举,维护一个栈表示当前前缀里所有颜色不同的人。加入一个人的时候和栈里的东西并起来查,查出来是栈大小说明这个颜色出现过,在栈里二分找到那个颜色相同的人。否则当前颜色没出现过,将其加入栈。代码#include<iostream>usingnam......