C++入门篇十
静态成员变量:可以共享数据,类内声明,类外初始化(实现)
// 静态成员变量.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h"
#include <iostream>
using namespace std; class Person {
public:
static int age;//加上static就是静态成员变量,会共享数据
//静态成员变量也是有权限 private:
static int other;//私有权限
}; //类外是可以实现静态成员变量,包括public,private,但是类内只能访问public的,private是不能访问的
int Person::age = ;//初始化,类外初始化实现
int Person::other = ;//这个也是可以访问到里面的私有权限的,在类外面就可以访问到这私有权限 void test01() {
//第一种方式:通过对象来访问属性
Person p1;
p1.age = ;
Person p2;
p2.age = ;
//下面是根据那个对象来访问这个属性,不同对象
cout << "p1 age:" << p1.age << endl;//结果4
cout << "p2 age:" << p2.age << endl;//结果4
//共享数据 //第二种方式
//通过类名来访问数据
cout << "类名访问数据" << Person::age << endl;//这个不会调用构造函数,所以不建议在类内的默认构造函数里面进行初始化数据
//cout << "访问私有权限" << Person::other << endl;//这个是不可以访问到私有权限的,类里面
} int main() { test01();
}
可以看到p2,p1指向的age的结果是相同的,因为第二次通过p2来访问属性的时候,这个name值已经共享了,所以两者是相同的,所有对象共享数据
总结:类内声明,类外实现(注意是类外),共享数据,分权限,public是可以访问的,private是不可以访问的,访问可以通过类来访问,Person::name,也可以通过对象来访问,p1.name,如果是通过类(Person::name)来进行访问的话,那么是不会调用默认构造函数的,如果是对象进行访问的话,那么会调用默认构造(有参和无参).
静态成员函数:
#include "pch.h"
#include <iostream>
using namespace std; //静态成员方法 //变量,声明,实现
class Person {
public: static int age;
int num;
//静态成员函数
//1.静态成员函数无法访问普通的成员变量,但是可以访问静态的成员变量
//普通成员函数都可以访问
//静态成员函数也有权限的区分\
//可以通过对象来访问也可以通过类名来访问
static void func() {
//静态成员函数,可以访问静态成员变量,但是不可以访问普通成员变量
age = ;//静态成员变量是可以访问的
//num = 3;//不可以访问普通成员变量,num
}
}; int Person::age = ;//静态成员数据在外部定义
//int Person::num = 4; void tets01() {
Person p1;
p1.func();//调用func可以初始化静态成员变量
p1.num = ;
cout << "age:" << p1.age << "num:" << p1.num << endl;
} int main() {
tets01();
}
总结:
静态成员函数无法访问普通的成员变量,但是可以访问静态的成员变量
静态成员函数也有权限的区分,public是可以访问的,但是private是不可以访问的,外部
可以通过对象来访问也可以通过类名来访问
C++入门篇十的更多相关文章
- 1.入门篇十分钟了解Spring Cloud
文章目录 Spring Cloud入门系列汇总 为什么需要学习Spring Cloud 什么是Spring Cloud 设计目标与优缺点 设计目标 优缺点 Spring Cloud发展前景 整体架构 ...
- C++入门篇十二
成员变量和成员属性: 静态成员函数和静态成员变量是不属于对象的,所以不占有空间,非静态成员是属于对象的,占有存储空间,空类大小1 #include "pch.h" #include ...
- 【Android开发日记】之入门篇(十二)——Android组件间的数据传输
组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- JS基础入门篇(三十五)—面向对象(二)
如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)
- [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动实现自动化测试入门基础应用
一.什么是DDT数据驱动框架 全称:data driver test数据驱动测试框架,可以完美的应用于unittest框架实现数据驱动.ddt使用简介: 1.测试数据为多个字典的list类型 2. ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- Unity3D大风暴之入门篇(海量教学视频版)
智画互动开发团队 编 ISBN 978-7-121-22242-9 2014年2月出版 定价:79.00元 328页 16开 编辑推荐 长达800分钟的高清教学视频,手把手教会初学者 数个开发案例 ...
- PC游戏编程(入门篇)(前言写的很不错)
PC游戏编程(入门篇) 第一章 基石 1. 1 BOSS登场--GAF简介 第二章 2D图形程式初体验 2.l 饮水思源--第一个"游戏"程式 2.2 知其所以然一一2D图形学基础 ...
随机推荐
- js中对象引用出现的问题
先看一个特别不符合直觉的代码 <script type="text/javascript"> var a = [1,2,3,4]; var b = [1,2,3,4]; ...
- rabbitmq 出现 com.rabbitmq.client.ShutdownSignalException: , ..................
-classpath "C:\Program Files\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Program Files\Java\jdk1. ...
- pstree:command not found
centos7默认并没有安装pstree,所以会有pstree:command not found yum -y install psmisc
- 管理者的情商EQ
管理者的情商EQ1 IQ与EQ与AQ: IQ:智慧.逻辑.解决问题 EQ:情感商数.领导团队的热情.互动 AQ:逆商.碰到逆境怎么办.得重大疾病怎么办 成功者的概率: 放弃者:70% 半途而废者:25 ...
- THUWC2019滚粗记
Day-1 今年年初,留坑,以后补,多多关注. Day0 上午吃了碗粉,就坐地铁到了高铁站. 做高铁从长沙到了广州,最大的感受就是热热热热热热热热. 所以太热了不说了.(雾 汉堡王真香 Day1 上午 ...
- 洛谷 P1903 [国家集训队]数颜色 / 维护队列
墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. \(Q\) \(L\) \(R\) 代表询问你从第L支画笔到第R支画笔中共有几种不同 ...
- php中的md5()的安全问题
汇总下php中md5()的安全问题 安全问题1: 1.x=任意字符串 md5('x')=0e*** 2.y=任意字符串 md5('y')=0e*** 如果x==y,php会返回true,在有些时候 ...
- vim命令替换操作
替换当前行第一个 vivian为sky :s/vivian/sky/ 替换当前行所有 vivian为sky :s/vivian/sky/g 替换第 n 行开始到最后一行中,每一行的第一个vivian为 ...
- xml转换为json格式时,如何将指定节点转换成数组 Json.NET
使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[], JsonConvert.SerializeXmlNode 并不能自动识别 示例如下: RecordA ...
- python集合的分类与操作
如图: 集合的炒作分类: 确定大小 测试项的成员关系 遍历集合 获取一个字符串表示 测试相等性 连接两个集合 转换为另一种类型的集合 插入一项 删除一项 替换一项 访问或获取一项