为了账号安全,请及时绑定邮箱和手机立即绑定
  • static静态

    static int s_iCount;  //静态数据成员
    static int getCount(){return s_iCount;}  //静态成员函数

    【静态数据成员】不依赖于对象,而是依赖于类(即使不实例化,静态数据成员在内存中仍然存在),不是在构造函数中实例化,而是单独进行

    //静态数据成员的实例化
    class Tank{
    ...
    };
    int Tank::s_iCount=0;  //不要再写static关键字了

    访问方法:两种

    //直接通过类,不通过对象
    cout<<Tank::getCount()<<Tank::s_iCount<<endl;
    //通过实例化的对象
    Tank tank;
    cout<<tank.getCount()<<tank.s_iCount<<endl;

    【注意事项】

    1、静态数据成员必须单独进行初始化

    2、静态成员函数不能调用非静态的成员函数和非静态的数据成员

    3、静态数据成员只有一份,且不依赖对象而存在

    查看全部
    0 采集 收起 来源:[C++]静态

    2018-12-29

  • class Circle;  //声明Circle类
    class Coordinate{
        friend Circle;  //将Circle声明为Coordinate的友元类
        //可以在Circle类中定义一个Coordinate的对象,并通过这个对象任意地访问Coordinate的私有数据成员和成员函数
    public:
    private:
    };
    //在Circle.h中
    class Circle{
    public:
        void printXY(){
            cout<<m_coor.m_iX<<m_coor.m_iY;
        }
    private:
        Coordinate m_coor;
    };

    【关于友元的注意事项】

    1、友元关系不可传递

    2、友元关系的单向性

    3、友元声明的形式和数量不受限制

    4、友元只是封装的一种补充(不是一个很好的语法,是不得已而为之的语法):友元破坏了封装性

    查看全部
    0 采集 收起 来源:[C++]友元类

    2018-12-29

  • void display(Coordinate coor);//传对象
    void display(Coordinate &coor);//传引用

    传引用 效率更高,因为传对象 会创建临时变量

    查看全部
    1 采集 收起 来源:单元巩固

    2018-12-29

  • 友元全局函数:访问私有的数据成员和成员函数

    class Time{
        friend void printTime(Time &t);
        //友元全局函数,跟public、private等不形成约束,可以写在这,也可以写在public、private、protected下面(没影响)
        //但是建议写在这里(最前面)
        public:
        Time(int hour,int min,int sec);
    private:
        int m_iHour;
        int m_iMinute;
        int m_iSecond;
    };
    //在main.cpp中
    void printTime(Time &t){
        cout<<t.m_iHour<<t.m_iMinute<<t.m_iSecond<<endl;
    }
    //m_iHour等都是在privtae下面定义的,如果不用友元函数,则程序无法执行

    友元成员函数:

    //在Match.h中
    class Time;    //用到了Time类型的&t
    class Match{
    public:
        void printTime(Time &t)  //在public里面   
    };
    //在Time.h中
    #include "Match.h"   //用到了Match::printTime
    class Time{
        friend void Match::printTime(Time &t);
    public:
    private:
    };
    //在Match.cpp中
    #include "Match.h"
    #include "Time.h"
    void Match::printTime(Time &t){
          cout<<t.m_iHour<<t.m_iMinute<<t.m_iSecond<<endl;
    }
    //在main.cpp中
    Time t(6,34,25);
    Match m;
    m.printTime(t);


    查看全部
  • 查看全部
    0 采集 收起 来源:课程简介

    2018-12-17

  • 模板类不能分开编译
    查看全部
    0 采集 收起 来源:[C++]类模板

    2018-11-27

  • const本质是给隐藏指针this加const;而static没有this指针

    所以static不能加const



    静态数据成员直接初始化,不能在类的构造函数中初始化,因为静态成员不依赖对象而存在,且只有一个。

    查看全部
  • 静态成员函数只能访问静态数据成员和调用静态成员函数

    查看全部
    0 采集 收起 来源:练习题

    2018-11-18

  • 键值的写法

    查看全部
  • 迭代器的写法

    查看全部
  • 111111111111

    查看全部
  • vector常用函数

    查看全部
  • 111111

    查看全部
  • 类外定义的写法

    查看全部
    0 采集 收起 来源:[C++]类模板

    2018-11-11

  • 类模板的写法

    查看全部
    0 采集 收起 来源:[C++]类模板

    2018-11-11

举报

0/150
提交
取消
课程须知
学习本课程需要有一定的C语言和C++语言基础。如基础不太扎实的同学可以,参与C++远征攻略的学习计划,友情链接 http://www.imooc.com/course/programdetail/pid/42
老师告诉你能学到什么?
1、友元函数及友元类的定义及使用方法 2、静态数据成员和静态成员函数的定义及使用方法 3、运算符重载的技巧 4、函数模板和类模板的定义及使用方法 5、标准模板库的使用方法及基本原理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!