zoukankan      html  css  js  c++  java
  • 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 = 0;//初始化,类外初始化实现
    int  Person::other = 32;//这个也是可以访问到里面的私有权限的,在类外面就可以访问到这私有权限
    
    void  test01() {
        //第一种方式:通过对象来访问属性
        Person p1;
        p1.age = 43;
        Person  p2;
        p2.age = 4;
        //下面是根据那个对象来访问这个属性,不同对象
        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 = 43;//静态成员变量是可以访问的
            //num = 3;//不可以访问普通成员变量,num
        }
    };
    
    int  Person::age = 32;//静态成员数据在外部定义
    //int Person::num = 4;
    
    
    void   tets01() {
        Person p1;
        p1.func();//调用func可以初始化静态成员变量
        p1.num = 5;
        cout << "age:" << p1.age << "num:" << p1.num << endl;
    }
    
    int  main() {
        tets01();
    }

    总结:

    静态成员函数无法访问普通的成员变量,但是可以访问静态的成员变量
    静态成员函数也有权限的区分,public是可以访问的,但是private是不可以访问的,外部
    可以通过对象来访问也可以通过类名来访问

  • 相关阅读:
    C++ 沉思录——Chap6:句柄2
    C++ 沉思录——Chap5:代理类
    C++ 沉思录——Chap4:设计类的核查表
    Linux 网卡驱动相关——01
    FCoE的提出
    想成为嵌入式程序员应知道的0x10个基本问题
    C++ 沉思录——Chap6:句柄
    C++ 沉思录——Chap8:一个面向对象程序范例
    数据库调优积累系列(1):索引
    QTP使用问题集锦
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10687348.html
Copyright © 2011-2022 走看看