静态成员变量:可以共享数据,类内声明,类外初始化(实现)

// 静态成员变量.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. 1.入门篇十分钟了解Spring Cloud

    文章目录 Spring Cloud入门系列汇总 为什么需要学习Spring Cloud 什么是Spring Cloud 设计目标与优缺点 设计目标 优缺点 Spring Cloud发展前景 整体架构 ...

  2. C++入门篇十二

    成员变量和成员属性: 静态成员函数和静态成员变量是不属于对象的,所以不占有空间,非静态成员是属于对象的,占有存储空间,空类大小1 #include "pch.h" #include ...

  3. 【Android开发日记】之入门篇(十二)——Android组件间的数据传输

    组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...

  4. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  5. JS基础入门篇(三十五)—面向对象(二)

    如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)

  6. [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动实现自动化测试入门基础应用

    一.什么是DDT数据驱动框架 ​ 全称:data driver test数据驱动测试框架,可以完美的应用于unittest框架实现数据驱动.ddt使用简介: 1.测试数据为多个字典的list类型 2. ...

  7. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  8. Unity3D大风暴之入门篇(海量教学视频版)

    智画互动开发团队 编   ISBN 978-7-121-22242-9 2014年2月出版 定价:79.00元 328页 16开 编辑推荐 长达800分钟的高清教学视频,手把手教会初学者 数个开发案例 ...

  9. PC游戏编程(入门篇)(前言写的很不错)

    PC游戏编程(入门篇) 第一章 基石 1. 1 BOSS登场--GAF简介 第二章 2D图形程式初体验 2.l 饮水思源--第一个"游戏"程式 2.2 知其所以然一一2D图形学基础 ...

随机推荐

  1. HDU 2174 Bridged Marble Rings

    题目:Bridged Marble Rings 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2174 题意:如图,要把所有灰色球移动到上圈,每次操作可以转 ...

  2. 腾讯云服务器哪个地区节点好?来ping一下速度就知道了

    腾讯云服务器怎么样?速度快吗?相信很多网友在购买云服务器之前都有此疑惑. 本人找了很久也没找到各区域节点的测试速度的域名和IP.即使有也不能批量查看对比哪个区域的速度. 网上都说这个区域节点速度快,那 ...

  3. Pyhon进阶9---类的继承

    类的继承 基本概念 定义 格式如下 继承中的访问控制 class Animal: __CNOUT = 0 HEIGHT = 0 def __init__(self,age,weight,height) ...

  4. jquery ajax几种书写方式的总结

    Ajax在前端的应用极其广泛,因此,我们有必要对其进行总结,以方便后期的使用. AJAX优点: 可以异步请求服务器的数据,实现页面数据的实时动态加载, 在不重新加载整个页面的情况下,可以与服务器交换数 ...

  5. servlet(4)异常处理

    一.异常处理 当一个 Servlet 抛出一个异常时,处理异常的servlet可以从HttpServletRequest里面得到几个属性,如下: 1.javax.servlet.error.statu ...

  6. jQuery在页面加载的时候自动调用某个函数的方法

    第一种:$(document).ready(function(){ func(xxx)//执行函数}); 第二种:$(function(){ func(xxx)//执行函数}); 第三种:jQuery ...

  7. Vue接口异常时处理

    一般接口只会对后台返回的json状态进行判断处理,当后台异常时,我们可以使用catch来对这些异常进行同样的报错处理. 例如: 上面显示代码例子中test为一个接口,json为后台正常返回的数据对象, ...

  8. SpringBoot文件上传(MVC情况和webFlux情况)

    MVC情况 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  9. sass补充(2019-3-9)

    @each 输出 格式: @each $var in value,value1,value2{ } eg: @each $var1 in 100px,200px,300px{ .box{ width: ...

  10. vue base64

    安装 cnpm install js-base64 --save 使用 let base64 = require('js-base64').Base64 base64.encode('要加密的内容') ...