友元与重载运算符

1类:一类事物的抽象(模板)

  定义:  class 类名

          {

            //方法

            //属性

          };

2、实例化对象:构造器分配空间并初始化

3、析构器:一个类对象需要作善后处理。

   什么时候来执行:当类对象被释放时,系统会通知对象(发送释放消息)。

   ~类名()    ;//不带形参

   注:1、只有一种析构器(不能重载 )

       2、默认添加析构函数(空函数体)

       3、堆区必须由delete来释放,否则不会被析构

 

4、友元

   1、友元函数:就是全局函数作为类的朋友

     作用:友元函数可以访问该类的非公有成员

    class 类名

    {

        //声明 

        friend 返回类型   函数名(...)

    };

    

    返回类型   函数名(...)

    {

    }

   2、友元类:若类A需要去访问类B的非公成员,则A声明为B的友元类,那么A就

   访问类B的非公有成员

    class B

    {

    ...

    friend class A;

    private:

        ...

    };

    class A

    {

     //访问B的成员

    ...    

    B b;

    }

    注:友元会破坏封装性。    

 

5、重载运算符:    将运算重载为可以对复杂类型进行运算。

    运算符:就是提供运算操作,

    运算表达式:运算的结果

    1、运算符的数据可以对基本类型进行运算。

    定义:   返回类型  operator运算符(形参);

   1、算术运算符:

        1、全局函数

            返回值 operator运算符(形参1,形参2)

        2、成员方法

            friend 返回值 operator运算符(形参1)

    2、判断运算符: >  < !=  >=  <=  ==

        结果: 真  假

        1、成员方法:

        2、全局函数:

    3、下标运算符 []

        1、成员方法:

    4、    重载输入输出流:

        输出:<<

        输入:>>

        两个标准输出输出流:cout/cin分别是类ostream/istream的对象

        重载:

        1全局函数

            void operator<<(ostream&,对象);

        2、不能为成员方法

        
        

    注:1、下列运算符不能重载:

        sizeof  对象->成员   new   *  &   对象.成员

        2、规定:对复杂类型重载运算符的结果类型必须保持与运算的表达式结果一致。

        3、语法规则:运算符的操作数目不能改变

        

    4、自增/自减:

        1、全局函数

            类 operator++(类);  前自增

            类 operator++(类,int)

        2成员方法

            类 operator++()    //前自增

            类 operator++(int)

4、数据区间:

  1、动态区:当函数被调用时,动态变量(在函数内定义的非staic变量)会被分配空间

        注:栈区变量(所有动态空间存储在栈区)

  2、静态区:在程序运行时主分配空间(全局,static)

  3、堆区:由malloc/new来分配的空间,只能由free/delete来释放

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值