C++(基础) 第二章(含 思维导图 PDF)

引用: 
    独立引用:int &pm=m;  这个时候,pm和m是同一个内存单元,可以是变量,也可以是常量。const flaot &rz=1.0
        传值:单向值传递:void func(int num)    void main(){  int value=5; func(value) }【不改变实参的值】
        传递指针: void  func(int *pnum)     void main(){ int value=5; func(&value)}  【指针pnum指向了value,为同一个空间,所以可以改变实参的值】
        传递引用: void func(int &pnum);    voiud main(){int value=5; func(value);}【就是一个独立引用,同样可以改变实参的值】
        返回引用: int &f(int *pint){renturn *pint}; vid mian(){int a=10,b; b=f(&a)*5;f(&a)=88;}                    结果: b=50 a=88;

抽象:(是相对的,不是绝对的)
    类声明: class classname{数据成员; 函数成员;};类内: 在class函数内,类外:在class函数外;  privete 和 protected  都是私有成员,不可被类外函数访问; public是共有成员,可以被类外函数访问;
    类类型:函数参数:  ①:counter func(counter obj)       void main(){counter b2=func(b1)}   b1指向obj,但是obj与b1的空间不一样,
        ②:对象引用: void func2(counter &obj)   void main(){func2(b1)}   b1和obj指向同一块空间。
            ③:对象指针:void func3(counter *obj)   void main(){func3(&b1)}     同样,obj和b1指向同一块空间
    对象数组:访问形式和struct 结构体一样。
        初始化:  point(){x=0;y=0;}   point(float a){x=a;y=0}  point(float a, float b){x=a,y=b;}   构造函数对其初始化 。   point array[3]={point(3,4),5}   第一个元素调用 point(flaot a,float b)   第二个元素5 调用函数 point (floata).  第三个函数元素为空,调用point().



对象的指针加减:
    eg: counter array[3]={5,6,7}  counter *p=array;  (同理于struct 结构体),首先是指向首地址,arrray[0]. 随着 p++, 指针的指向发生改变!

静态成员:静态数据成员+静态成员函数
    特征:①:共享数据(静态成员是属于类,而非一个对象!)②:静态数据成员未被定义的时候,默认为0;  也可声明为 privated 和 public
        eg: class counter{static int count}   void main(){counter a,b; }  则a,b这两个类都共享 count这个 数据。



构造函数:与类同名+没有返回类型+可以有参数+自动调用,完成对象初始化的工作
    初始化方式:①:clock(int h, int m ,int s){Hour=h; Minute=m; Second=s}  ②:clock(int h, int m, int s):Hour(h), Minute(m),Second(s);
        在main函数中的初始化:①:counter1(8) 或者 counter2=9【这种方式是对于一个参数】; ②:clock1(3,5,1)   【这种可以有多个参数】   注意: clock2();这种不可以,因为【若构造函数存在参数,不允许对象无对应实参。】
        重载构造函数;运用道理同构造函数
    缺省参数的构造函数
        clock(int h=0, int m=0,int s=0)【运用道理仍同于缺省的构造函数】
    对于没有设置构造函数的,系统自动生成无参的构造函数且不做仍和任何工作。



析构函数:无返回类型+无参数+对象的生存期结束时自动调用,用于释放空间;形式:~cstring
    同理于构造函数,若无显式说明,系统自动生成且不做任何工作。
    注意:每创建一个新的对象,当其生存期结束后都会自动调用析构函数。
    若对象开辟了一个空间且存入了数据,没有显式的写析构函数的时候,当对象被释放时,当该空间不会被释放,这个时候该空间就用不了



拷贝构造函数(注意一个浅拷贝即位拷贝)
    功能:将同类的对象引用作为参数,将对象中的数据成员逐一赋值给新对象。
        形式;point(point &obj)注意和类对象最为函数参数的形式: counter func(counter obj)
        调用方式: point obj2(obj1)或 point obj3=obj2;(类似于struct 中的p=p1);
    若没有显式的说明拷贝构造函数,则系统会自动生成一个,且做的式位拷贝(对象指向同一块空间,这个时候析构的话就会出现一个空间被释放两次!)


注意点:
    在类外进行函数的说明,一定要加上作用域符
    类的访问:对象名.数据成员(和struct结构体访问一样,同理于指针)
    new开辟的空间,同样可用于class。eg: Baseclass *c1=new Baseclass();【新类】
    private+public+protected
        ①:可以按任意顺序出现 ②:public protected private 可以多次出现 ③:一个成员只可以有一种访问属性!
 

 

一起学习,一起分享

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值