首页 > 其他分享 >为什么static类型的成员函数不能被声明为const类型

为什么static类型的成员函数不能被声明为const类型

时间:2024-10-10 11:22:23浏览次数:13  
标签:const int age static 类型 class 指针

错误代码
#include <iostream>
#include <string>
using namespace std;

class Lion
{
public: 
	void setAge(int age)
	{
		this->age = age;
	}
	int getAge() const
	{
		return this->age;
	}
	static int getTotalCount() const//error
	{
		return totalLionsCount;
	}
private:
	int age = 0;
	static int totalLionsCount;
};

Compile error:
 error C2272: 'getTotalCount': modifiers not allowed on static member functions
原因:
int getAge() const 
等价与:
int getAge(const Lion* const this)

const类型的成员函数相当于传入了一个隐藏的const类型的this指针, 该指针指向Lion class 的一个实例,并且这个实例是const类型, 该this指针只能读取数,不能修改成员变量
但是static是属于class的,无法获取object的this指针, 综上,所以无法声明为const类型。

Reference:

C++: Why static member functions of a class can’t be const?

标签:const,int,age,static,类型,class,指针
From: https://blog.csdn.net/lianyunwangqian/article/details/142816997

相关文章

  • MySql基础:数据类型
    1.数据类型的整体分类    说明:在mysql表中建立属性列都是列名称在前类型在后。2.整数数据类型        说明:在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的类型字节最小值最大值(带符号的/无符......
  • String类型对象每个元素转换为List<Character>或List<String>
    Stringstr="abc";第一眼想到是通过String#toCharArray()转换为char[],然后再转换为List,尝试用Arrays.asList(T...a):char[]chars=str.toCharArray();List<char[]>list=Arrays.asList(chars);System.out.println(list);发现转换结果不符合预期,因为是原始类型数组,被......
  • [20241009]oracle timestamp with time zone数据类型的存储.txt
    [20241009]oracletimestampwithtimezone数据类型的存储.txt--//放假前遇到的问题,开发在表中定义了几个timestampwithtimezone的数据类型,及时更正对方的错误,完全没有使用这样的数据--//类型。类似的问题我以前就遇到,比如全部应用程序的表凡是varchar2数据类型都被定义为nvar......
  • HTML表单输入类型详解及其特点
    HTML表单输入类型详解及其特点HTML表单是用户与网页交互的重要方式,用于收集用户输入的数据。表单中的<input>元素是最常见的元素之一,它有多种类型,每种类型都有其特定的用途和特点。以下是对HTML表单中所有输入类型的详细解释,包括它们的用法和特点:1.text用途:用于输入较短......
  • 4.Python 函数(函数的定义、函数的传入参数、函数的返回值、None 类型、函数说明文档、
    一、函数快速入门1、函数概述函数是组织好的,可重复使用的,用来实现特定功能的代码段name="HelloWorld"name_length=len(name)print(f"{name}的长度为{name_length}")#HelloWorld的长度为11len()是Python内置的函数,是提前写好的,可以重复使用,实现统计长......
  • 信息学奥赛复赛复习15-CSP-J2022-01乘方-数据类型、类型转换、数据类型溢出、指数、模
    PDF文档公众号回复关键字:202410091P8813[CSP-J2022]乘方[题目描述]小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数a和b,求a^b的值是多少。a^b即b个a相乘的值,例如2^3即为3个2相乘,结果为2×2×2=8“简单!”小文心想,同时很快就写出了......
  • Capital许可证类型全解析
    在数字化时代,软件已成为企业运营不可或缺的重要工具。为确保合规、高效地使用这些软件,了解并选择适合企业需求的许可证类型至关重要。Capital作为专业的软件许可管理解决方案提供商,致力于帮助企业全面了解各种许可证类型,从而做出明智的选择。一、Capital许可证类型概览Capital提......
  • C# 类型增加自定义xml序列化
    1、首先类需要增加[Serializable]标识2、类实现IXmlSerializable接口下面是重写ReadXml和WriteXml方法publicvoidReadXml(XmlReaderreader){reader.ReadStartElement(reader.LocalName);while(reader.Read()){if(reader.Name=="TimeType"&&......
  • 在K8S中,DaemonSet类型的资源特性有哪些?
    在Kubernetes(K8s)中,DaemonSet是一种特殊的控制器资源对象,其核心特性和用途使得它非常适合用于在集群的每个节点上运行守护进程或服务。以下是DaemonSet类型的资源特性的详细阐述:1.确保每个节点上运行Pod副本节点级部署:DaemonSet确保集群中的每个节点(或满足特定条件的节点)上都运......
  • 性能测试的类型有哪些
    目录1.基准测试2.负载测试3.压力测试4.峰值测试5.并发测试6.容积测试7.稳定性测试8.可扩展性测试9.配置测试性能测试是为测量或评估被测软件系统与性能效率相关的特性而实施的一类测试,它关注被测系统在不同负载下的各种性能效率。软件系统的性能效率相关特性的覆盖......