C++迈向精通:学习笔记:类属性与类方法

类属性与类方法

注意:这不是教程,是学习笔记,不适合初学者阅读!!

类属性与方法

成员属性与成员方法

在类中定义的方法与属性,就叫做成员属性与方法。

类属性与类方法

依然在类里面,但区别是:

  • 属性:A有自己的成员属性,B有自己的成员属性,C也有自己的成员属性。也就是它们的成员属性都是不一样的,每一个人都拥有属于自己的成员属性。而类属性则是指的每个成员所访问的属性空间是一样的,大家拥有的是同一份。
  • 方法:在成员方法中,我们可以访问 this 指针,如果在类方法中,不可以访问 this 指针。

访问类属性的三个方法:

  • 通过对象访问
  • 通过类的命名空间
  • 通过作用域的默认规则
class Point {
public :Point() : x(0), y(0) {}Point(int x, int y) : x(x), y(y) {}void set_x(int x) { this->x = x; }void set_y(int y) { this->y = y; }int get_x() {// this->get_x_cnt++;// get_x_cnt++;Point::get_x_cnt++; // 每次调用get_x,get_x_cnt加1return this->x; }int get_y() { return this->y; }private :// 定义类属性// 现在来实现这样的一个需求:get_x被调用的次数// static的作用是使得该变量不需要依赖对象来访问static int get_x_cnt; // 声明类属性int x, y;
}

最不容易让人出错的方式:通过命名空间访问 Point::get_x_cnt++

类的作用域:

成员变量只在类中有效。

代码示例,演示了类属性、类方法和作用域:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <list>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <cassert>
#include <complex>
#include <numeric>
#include <algorithm>
#include <iomanip>
#include <climits>
#include <limits>
#include <chrono>using namespace std;class Point {
public :Point() : x(0), y(0) {}Point(int x, int y) : x(x), y(y) {}void set_x(int x) { this->x = x; }void set_y(int y) { this->y = y; }int get_x() {// this->get_x_cnt++;// get_x_cnt++;Point::get_x_cnt++; // 每次调用get_x,get_x_cnt加1return this->x; }int get_y() { return this->y; }// 类方法:static int x_cnt() {return Point::get_x_cnt; // 返回类属性}private :// 定义类属性// 现在来实现这样的一个需求:get_x被调用的次数// static的作用是使得该变量不需要依赖对象来访问static int get_x_cnt; // 声明类属性int x, y;
};int Point::get_x_cnt = 0; // 初始化类属性,定义int main() {Point p1(3, 4), p2(5, 6);cout << p1.get_x() << "," << p1.get_y() << endl;cout << p2.get_x() << "," << p2.get_y() << endl;p1.get_x(), p1.get_x(), p1.get_x();cout << "x_cnt :" << Point::x_cnt() << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vcf文件可以用excel打开吗?四种解决方案

vcf文件可以用excel打开吗&#xff1f; 当然可以。 一、VCF文件简介 VCF&#xff08;vCard&#xff09;文件是一种用于存储联系人信息的文件格式。它通常包含姓名、电话号码、电子邮件地址、地址等详细信息。VCF文件在多种设备和操作系统中广泛使用&#xff0c;特别是在电子邮…

字节流 字符流回顾

字节流&#xff1a;字节流以字节为单位进行数据传输。这种流适用于处理二进制数据&#xff0c;例如图片、音频、视频等文件。在Java中&#xff0c;字节流由InputStream和OutputStream类及其子类实现。常见的字节流类包括FileInputStream、FileOutputStream、等。 字符流&#…

2024全国水科技大会【高峰对话】北京排水集团(附部分报告题目)

北京排水集团坚持“服务社会、造福百姓、企业利益与公众利益高度一致”的宗旨&#xff0c;充分认知自身在地区经济发展中的社会责任&#xff0c;以满足政府与公众对公用事业企业服务的需求为首要任务&#xff0c;通过“现代化的队伍、现代化的手段、现代化的设备和现代化的管理…

springBoot+ureport报表引擎

UReport是一款基于单元格迭代模型的纯Java中式报表引擎。它架构于Spring之上&#xff0c;因此与企业应用具有良好的集成能力。UReport提供了基于Eclipse插件与基于网页的两种报表模版设计方式&#xff0c;采用类Excel报表模版设计风格&#xff0c;简单、易上手&#xff0c;可在…

数据结构和算法:搜索

二分查找 二分查找&#xff08;binary search&#xff09; 是一种基于分治策略的高效搜索算法。它利用数据的有序性&#xff0c;每轮缩小一半搜索范围&#xff0c;直至找到目标元素或搜索区间为空为止。 给定一个长度为 &#x1d45b; 的数组 nums &#xff0c;元素按从小到大…

django orm DateTimeField 6位小数精度问题

from django.db.backends.mysql.base import DatabaseWrapperDatabaseWrapper.data_types[DateTimeField] "datetime"意思就是重写源码里面的DateTimeField字段

如何在家中使用手机平板电脑 公司iStoreOS软路由实现远程桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能&#xff0c;也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

《1w实盘and大盘基金预测 day12》

昨天预测大错特错&#xff0c;大盘也破位了。 昨天预测&#xff1a; 3006-3043-3053 震荡反弹&#xff0c;冲高回落 主要关注证券、保险等金融板块&#xff0c;是否能带大盘到新高&#xff1f; 吐槽一下医疗&#xff0c;真lj。吐了 科技可能还要调整&#xff0c;明显感觉资金…

CloudCompare 二次开发(29)——最小二乘拟合平面

目录 一、概述二、代码集成三、结果展示一、概述 使用CloudCompare实现的最小二乘拟合平面。具体计算原理见:PCL 最小二乘拟合平面。 二、代码集成 1、mainwindow.h文件public中添加: void doActionPCLLeastSquareFitPlane(); // 最小二乘拟合平面2、mainwindow.cpp文件…

keyStore类处理

加载公钥证书, 成为keyStore public static void main(String[] args) {Security.addProvider(new BouncyCastleProvider());String certFilePath "C:\\alipayRootCert.crt";String certType "X.509";String provider "BC";try (FileInputSt…

mybatis一键配置

mybaits起步依赖<!-- mybatis的起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- mysql驱动 --><dependency><groupId&…

2024年【起重机械指挥】考试报名及起重机械指挥免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机械指挥免费试题题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机械指挥模拟考试题库很简单。 1、【多选题】严禁吊车超负…

凯撒加密.

题目描述 给定一个单词&#xff0c;请使用凯撒密码将这个单词加密 凯撒密码是一种替换加密的技术&#xff0c;单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为 d&#xff0c;变为e.&#xff0c;w 变为z&#xff0c;2 变为a&#xff0c;y变为 6&#xff0c;z变…

Java——注解和注释

0 注解和注释的区别 在博主刚开始学习java语言的时候&#xff0c;经常把注释和注解搞混淆&#xff0c;误认为这两个是类似的东西&#xff0c;其实它们完全不是一个东西。 注释&#xff1a; 注释是程序员在代码中添加的说明性文字&#xff0c;用于解释代码的功能、目的或实现…

每日五道java面试题之springboot篇(二)

目录&#xff1a; 第一题. 你如何理解 Spring Boot 配置加载顺序&#xff1f;第二题. Spring Boot 中如何解决跨域问题 ?第三题. 什么是 CSRF 攻击&#xff1f;第四题. 比较一下 Spring Security 和 Shiro 各自的优缺点 ?第五题. bootstrap.properties 和 application.proper…

在python中记录log

只记录log&#xff0c;不同步打印到控制台 import logging import os from datetime import datetime# 获取当前日期 date datetime.now().strftime(%Y-%m-%d)# 获取当前文件的目录 current_path os.path.dirname(os.path.abspath(__file__)) log_path os.path.join(curren…

[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别

全文搜索是数据库和搜索引擎的重要功能。这个功能能在一个或多个列中查找用户查询的文本&#xff0c;这对诸如电子商务网站和检索大量文本数据的应用是必需的。在这篇文章中&#xff0c;我们将详细对比三种主流全文搜索技术&#xff1a; MySQL全文索引&#xff0c;Redis的Redis…

【Ucore操作系统】8. 并发

文章目录 【 0. 引言 】0.1 线程定义0.2 同步互斥 【 1. 内核态的线程管理 】1.1 线程概念1.2 线程模型与重要系统调用1.2.1 线程创建系统调用1.2.2 等待子线程系统调用1.2.3 进程相关的系统调用 1.3 应用程序示例1.3.1 系统调用封装1.3.2 多线程应用程序 – threads 1.4 线程管…

考研数学|《660题》这样刷最有效!

考研数学660题作为许多考研学子在备考过程中重要的复习资料之一&#xff0c;自然也有很多同学会有660该怎么刷的问题。为了更有效率地使用这些题目&#xff0c;希望以下策略能帮到大家&#xff0c; 首先&#xff0c;你需要根据自己的实际情况&#xff0c;制定一个合理的学习计…

【网安】DDoS攻击:方法、影响与防御策略

【网安】DDoS攻击&#xff1a;方法、影响与防御策略 前言DDoS攻击实现的常见方法Volumetric Attacks&#xff08;流量攻击&#xff09;UDP FloodICMP (Ping) Flood Protocol Attacks&#xff08;协议攻击&#xff09;SYN Flood Application Layer Attacks&#xff08;应用层攻击…