c++基础知识day2

1.this指针


    1.1概念:


    一个特殊的指针,存放当前对象的首地址
    
    成员函数中都隐含着一个this;
    成员只能由对象来调用,谁调用函数,this指针指向哪个对象


    1.2指针原理


        在调用成员时,编译器会用this调用成员。哪个对象调用成员函数,
        this指针就指向哪个对象


    1.3应用


        1)区分属性和参数同名
            当类中的属性和参数同名时,可以用this指向属性区分
        2)链式调用
        函数返回值时对象引用时,可以返回*this。可以用链式调用


2.static关键字


    2.1静态局部变量


        static修饰局部变量,所有这个类的所有对象共享,只有一份
        第一次函数调用的时候,静态局部变量进行初始化。生命周期直到程序结束


    2.2静态成员变量


        static修饰的成员变量
        注意事项:
        1)在程序运行时创建,在程序运行结束时销毁
        2)类中声明,类外初始化
        3)类中所有对象共享,在对象创建之前就已经存在
        4)公共权限瞎的静态成员可以用类::的方式访问


    2.3静态函数


        特点:
        1)和类相关,在对象创建之前就可以调用
        2)静态函数只能访问静态成员,不可以访问非静态成员 ,因为没有this指针
        3)声明和定义分离的时候,static关键字只需要加在声明处


3.const关键字


    3.1const修饰局部变量


    通常情况下const修饰的局部变量表示常量,不允许进行修改


    3.2const修饰成员变量


    特点:
        1)在运行时不允许修改
        2)必须初始化,初始化可以通过初始化列表或者直接属性赋值,不能通过构造函数赋值。
        3)一般在对象使用过程中,其数据成员成员不允许修改,可以用const来修饰


    3.3const修饰成员变量


    目的:实现数据保护,常含书只能访问数据,不能进行修改
    特点:
        1)可以访问非const成员变量,但是不能修改
        2)不能访问非const函数


    3.4const修饰对象


    特点:
        只允许访问const成员 ,不允许修改成员变量,不允许访问非const成员函数
        const修饰对象可以写在类名前,也可以写在类名后


4.友元


    原因:
        类实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,仅能通过类的成员函数才能读写。
        如果数据成员定义为公共的,则又破坏了封装性。但是某些情况下,需要频繁读写类的数据成员,
        特别是在对某些成员函数多次调用时,由于参数传递、类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。
        友元主要是用于运算符重载


    4.1友元函数


    概念:
        友元函数是定义在类外部的普通函数,需要类中使用friend关键字进行说明,友元函数就可以访问类中的私有成员
    特点:
        1)友元函数不是类的成员,所有没有this指针。所以参数应该是对象的引用,用于访问类中成员
        2)不是类中函数,所有不受类中权限修饰符的限制,可以写在任意位置


    4.2友元类


    当一个类是另一个类的友元类时,它就可以访问另一个类中所有的成员


5.运载符重载


    在C++中,运算符的操作对象只能是基本数据类型。自定义类型是不能直接使用,所有运算重载对已有的运算符赋予多重含义。
    使同一个运算符作用与不同类型数据做出不同的行为
    
    运算符重载的本质是函数重载,它也是C++多态的一种体现
    
    运算符重载增强了C++的可扩充性,使得C++代码更加直观、易读
    
    C++提供的运算符重载机制,重载运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要重载的运算符共同组成。
    和其他函数一样,重载运算符的函数也包括返回类型、参数列表及函数体
    
    例如:
    加号的友元函数重载
        Rice operator +(Rice& r1,Rice& r2)
            Rice:返回值
            operator +:函数名
            Rice& r1,Rice& r2 :两个对象类型的参数
    加号的成员函数重载    
        成员函数隐含一个this指针。哪个对象调用函数,this指针指向谁
        成员函数 Rice operator +(Rice& r2) 
        相当于 Rice operator +(Rice * this,Rice& r2)
        r1+r2 操作时 this指向r1 第二个参数是r2


    


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值