首页 > 编程语言 >C++类(class)中的this指针与静态成员

C++类(class)中的this指针与静态成员

时间:2024-03-31 15:33:49浏览次数:26  
标签:函数 静态 成员 C++ 对象 全局变量 class 变量 指针

1.this指针

作用:指向成员函数所作用的对象

2.静态成员

定义方式:在定义成员时加static关键字。

访问方式:不用通过对象就可以访问(类似全局变量/全局函数)

目的:设置静态成员这种机制的目的是将和某些类紧密相关的全局变量和函数写到类里面,看上去像一个整体,易于维护和理解。

①静态成员变量

特点:每一个类对象都有各自的普通成员变量,但静态成员变量对于整个类来说就只有一个,相当于类的一个全局变量,被所有对象共享。且利用sizeof计算类对象大小时不会计入静态成员变量。

作用:用于分析这个类整体的特性,如一共有多少个类对象存在等。

②静态成员函数

特点:普通成员函数必须具体作用于某个对象,而静态成员函数并不具体作用于某个对象,相当于类的一个全局函数。

注意事项:在静态成员函数中,不可以调用非静态成员变量,也不能调用非静态成员函数,也不能使用this指针(因为静态成员函数并不具体作用于某个对象)。因此,静态成员函数的真实参数得到个数就是程序中写出的参数的个数。

E.g.:考虑一个需要随时知道矩形总数和总面积的图形处理程序

标签:函数,静态,成员,C++,对象,全局变量,class,变量,指针
From: https://blog.csdn.net/2301_79959126/article/details/137171513

相关文章

  • C++Lambda表达式
    Lambda表达式0、介绍c++11新引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更加简介,并且可以在函数内部定义。通常,lambda用于封装传递给算法或异步方法的几行代码。1、Lambd......
  • 老鹰捉小鸡 c++编程参考程序(一本通51.
    #include<bits/stdc++.h>usingnamespacestd;intmain(){   inti,j,a[6],n;//定义整形变量   for(i=1;i<6;i++)//循环      a[i]=i;   i=1;   cout<<i<<":"<<"";//输出i   for(j=1;j<6;j++)//再循环      cout<......
  • C++String类
    前言大家好,我是jiantaoyab,本篇文章将给大家介绍String类的常用法,和模拟实现String类。String介绍在cplusplus中,对String有着下面的介绍。Thestandardstringclassprovidessupportforsuchobjectswithaninterfacesimilartothatofastandardcontainerofb......
  • C++原子操作与内存序 1
    问题#include<iostream>#include<thread>intmain(){ intsum=0; autof=[&sum](){ for(inti=0;i<10000;i++) sum+=1; }; std::threadt1(f); std::threadt2(f); t1.join(); t2.join(); std::cout<<"thesum......
  • 【c++】类和对象(六)深入了解隐式类型转换
    ......
  • C++: 虚函数,一些可能被忽视的细节
    C++:虚函数,一些可能被忽视的细节引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻。本文详细解答以下几个问题:实现多态,忘记写virtual会怎么样?虚函数的默认参数可以重载吗?纯虚函数真的不能有实现吗?析构函数可......
  • C++ 中的 volatile 和 atomic
    C++中的volatile和atomic0.TL;DRstd::atomic用于多线程并发场景,有两个典型使用场景:原子操作:对atomic变量的操作(读/写/自增/自减)仿佛受互斥量保护。一般通过特殊的机器指令实现,比使用互斥量更高效限制编译器/硬件对赋值操作的重新排序volatile和多线程并发没有......
  • Pointer-like classes像指针又像函数
    Pointer-likeclasses像指针又像函数智能指针概念:一个类做出来像类又像指针示例代码:#pragmaonce#ifndef__SHAREPOINTER__#define__SHAREPOINTER__​template<classT>classshared_ptr{public:shared_ptr(T*p):px(p){}T&operator*()const{return*px;}......
  • C++—vector的介绍及使用 && vector的模拟实现
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录文章目录前言一、vector的介绍及使用1.1vector的介绍1.2vector的使用1.2.1vector的定义1.2.2vectoriterator的使用1.2.3vector空间增长问题1.2.4 vector增删查改1.2.5 vector迭代器......
  • C语言入门:数组与指针的关系
    目录深入理解指针操作指针的基本概念指针与数组的关系指针与函数动态内存分配与释放内存分配函数内存释放函数动态内存管理注意事项深入理解指针操作、动态内存分配与释放是C语言编程中的核心技能。以下内容将进一步详细阐述这些主题,旨在帮助开发者更好地掌握指针......