在限制条件下求1+2+3+...+n

一:题目

二:代码

前提:

A:静态成员和静态函数的性质

1.静态成员所有类对象所共享,不属于某个具体的对象,存放在静态区
2. 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
3. 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
4. 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
5. 静态成员也是类的成员,受publicprotectedprivate 访问限定符的限制
B:内部类的性质
1.内部类就是外部类的友元类
2. 内部类可以定义在外部类的publicprotectedprivate都是可以的。
3. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。
4. sizeof(外部类)=外部类,和内部类没有任何关系。

①:非内部类法

class A
{
    public:
    A()
    {
        sum+=i;
        i+=1;
    }
    static int Getsum()
    {
        return sum;
    }

    private:
    static int sum;
    static int i;
};
int A::i = 1;
int A::sum = 0;
class Solution {
public:
    int Sum_Solution(int n) 
    {
        A arr[n];
        return A::Getsum();
        
    }
};

解释 :

a:在Solutoin这个类中创建了一个n个类A对象的数组

b:在A的构造函数中进行sum+=i,i+=i(sum是和,i是1到n的遍历),调用n次构造,得到的就是我们要的1+到n

c:因为A中的成员变量是私有的,所以我们在Solutoin类中的函数中无法return A::sum来获取,而是在A中构建一个静态成员函数来获取sum,此时Solutoin中return A::Getsum()即可

Q:为什么函数要static,为什么函数就能获取到私有的sum?

A:能获取到私有的sum是因为这函数是A类的成员函数,所以可以访问到本A类的成员变量,无论是私有共有;而至于函数为什么要static,是因为静态函数没有隐藏的this指针,我们在Sulotion类中可以直接调用,而不需要创建一个类A 的对象,才去访问(而且创建类A的对象还会影响sum)

A中成员变量是公有的写法: 

class A
{
    public:
    A()
    {
        sum+=i;
        i+=1;
    }
    public:
    static int sum;
    static int i;
};
int A::i = 1;
int A::sum = 0;
class Solution {
public:
    int Sum_Solution(int n) 
    {
        A arr[n];
        return A::sum;
    }
};

解释:

a:因为是公有,所以直接return A::sum;即可,Getsum函数也不需要了

②:内部类法

class Solution {
public:
   class A
    {
        public:
        A()
        {
            sum+=i;
            i+=1;
        }
    };

    int Sum_Solution(int n) 
    {
        A arr[n];
        return sum;
        
    }
    private:
    static int sum;
    static int i;
};
    int Solution::sum=0;
    int Solution::i=1;

解释:

a:和非内部类法是一样的思路,更方便的地方在于,我们的static是Solution类的成员变量,所以当内部类A最后得到sum时,我们直接return sum即可(无论公有私有)

如果你想把两个静态变量作为A的成员变量,也可以:

class Solution {
public:
   class A
    {
        public:
        A()
        {
            sum+=i;
            i+=1;
        }
        static int Getsum()
        {
            return sum;
        }
    private:
    static int sum;
    static int i;
    };

    int Sum_Solution(int n) 
    {
        A arr[n];
        return A::Getsum();
        
    }
};
    int Solution::A::sum=0;
    int Solution::A::i=1;

解释 :

a:麻烦的地方在于,在最外部的定义的时候,需要解两层域(Solution::A::)

b:其次我们一般成员变量都是私有的,所以我们想获得A的私有静态变量sum,也是要在A中写一个函数来获取

如果类A的成员变量是公有的:

class Solution {
public:
   class A
    {
        public:
        A()
        {
            sum+=i;
            i+=1;
        }
        
    public:
    static int sum;
    static int i;
    };

    int Sum_Solution(int n) 
    {
        A arr[n];
        return A::sum;
        
    }
};
    int Solution::A::sum=0;
    int Solution::A::i=1;

解释:

a:不用写静态函数了,Solution中直接return A::sum即可 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型生图安全疫苗注入赛题解析(DataWhale组队学习)

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月实践赛的大模型生图安全疫苗注入赛道;本文主要整理本次赛事的基本流程和优化方法。💕💕😊 一…

使用node.js控制CMD命令——修改本机IP地址

设置每次打开cmd命令行窗口都是以管理员身份运行: 1. 按下Ctrl Shift Esc键组合,打开任务管理器。 2. 在任务管理器中,点击“文件”菜单,选择“运行新任务”。 3. 在“创建新任务”对话框中,输入cmd,勾…

1.2024.10.17

2024.10.17 总体规划 总体规划 写这个合集的原因 记录自己入行之前成长过程。本人菜鸟一枚,大佬不喜勿喷。 目前的规划 更新频率 尽量一天一更,会更新之前发布的笔记,争取笔记更加完善。 学习方法 目标 通过面试,成功入行嵌…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(1)

移情别恋c ദ്ദി˶ー̀֊ー́ ) ——14.哈希(1) unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 l o g 2 N log_2 N log2​N,即最差情况下需要比较红黑树的高度次…

新兴的安全职业挑战

我们经常与安全专业人士交谈,他们希望在努力提升职业发展的同时提高自己的价值并克服组织内部的挑战。在这些谈话中,花费大量时间讨论公司未来将面临的安全问题并不罕见。 安全领导者希望为问题制定计划并获得领导层对其计划的支持。这通常意味着实施修…

【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制

💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心&…

IDEA下载安装

文章目录 1、下载安装包2、安装IDEA3、全局配置4、安装插件5、关闭合并菜单栏 1、下载安装包 IDEA官网下载最新IDEA。 上面的ULtimate是旗舰版,试用30天,之后是需要收费的,下面黑色区域的Community是社区版,功能不如旗舰版丰富&a…

nuScenes数据集使用的相机的外参和内参

因为需要用不同数据集测试对比效果,而一般的模型代码里实现的检测结果可视化都是使用open3d的Visualizer在点云上画的3d框,展示出来的可视化效果很差,可能是偷懒,没有实现将检测结果投影到各相机的图像上,所以检测效果…

删除链表的倒数第 N 个结点 | LeetCode-19 | 双指针 | 递归 | 栈 | 四种方法

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 这道题还可以用递归法,你想到了吗?毛毛张介绍四种方法 LeetCode链接:19. 删除链表的倒数第 N 个结点 1.题目描述 给你一个链表&a…

【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因…

C++11新特性(4)

目录 1.包装器 2.线程库 2.1thread类的简单介绍 2.2线程函数参数 2.3原子性操作库(atomic) 2.4lock_guard与unique_lock 2.5mutex的种类 1. std::mutex 2. std::recursive_mutex 3. std::timed_mutex 4. std::recursive_timed_mutex 2.6lock_guard 2.7unique_lock 3.支持两个线…

鼠标市场洞察:数据分析揭示消费趋势!

鼠标整体数据分析 一. 概述 本报告基于从淘宝商品搜索接口和淘宝精确月销量接口中提取的数据,分析了前百个品牌在销售额上的占比情况。分析涵盖了销售额和占比的数据,为决策提供了依据。(以上两个接口有需求的可以找我要链接)(数…

概率 随机变量以及分布

一、基础定义及分类 1、随机变量 随机变量是一个从样本空间(所有可能结果的集合)到实数集的函数。(随机变量的值可以是离散的,也可以是连续的。 ) 事件可以定义为随机变量取特定值的集合。 2、离散型随机变量 随机变…

Unity开发Hololens项目

Unity打包Hololens设备 目录Visual Studio2019 / Visual Studio2022 远端部署设置Visual Studio2019 / Visual Studio2022 USB部署设置Hololens设备如何查找自身IPHololens设备门户Unity工程内的打包设置 目录 记录下自己做MR相关:Unity和HoloLens设备的历程。 Vi…

软件企业选择第三方软件检测机构有哪些好处?

在软件开发的当今时代,确保软件的质量和性能是每个企业面临的挑战,因此软件检测公正必不可少。随着市场的需求,越来越多企业会选择将该项工作交由第三方软件检测机构进行。第三方软件检测机构指独立于软件开发方和需求方的第三方机构&#xf…

5、JavaScript(二)

17.对象 1、对象:⽤来存储多个数据的 是由多个键值对/key value对组成的 ⽤来描述⼀个事物的 相当于多个变量的集合 2、格式 :{key:value,key:value} 键/值对 属性名:属性值 3、对象的属性值是不限制数据类型的,甚至还可以是对…

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(一)EMD-CSDN博客 EMD、EEM…

JavaWeb合集05-SpringBoot基础知识

五、SpringBoot基础知识 0、实用方法 0.1 动态获取某个文件路径 //getResource( name:" emp.txt") 更具名称获取资源链接;getFile() 获取文件对象 String filePaththis.getClass().getClassLoader().getResource( name:" emp.txt").getFile(…

数仓建设:如何设计数据治理考评规则?

目录 0 为什么要数据治理? 2 什么是数据治理? ​​​​​​​3 如何数据治理如何落地? ​​​​​​​4 数据考评的指标 5 考核指标列表 6 数仓团队应如何建设? 6.1 ​​​​​​​考评指标分析 6.2 ​​​健康分计算规则…

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR(无类别域间路由) 目的IP & 当前路由器的子网掩码 …