类和对象学习总结

       类是一组具有相同属性和行为的对象的抽象,类的基本思想是数据抽象和封装,要实现数据抽象和封装,首先要定义一个抽象数据类型(ADT)。抽象数据类型:一组数据和对这些数据的操作,C++基本语言定义的抽象数据类型:结构体,描述数据;全局函数,描述对数据的操作,数据以参数的形式传递给函数。

        数据成员与成员函数:C++结构体中可以包含函数作为成员,结构体内的函数被称为成员函数,结构体的数据称为数据成员,这样的结构体被称为类,结构体类型的变量称为对象。

        数据成员的类内初始化:C++11 允许为数据成员提供一个类内初始值,创建对象时,类内初始值将用于初始化数据成员,没有初始值的成员将被默认初始化,数据成员类内初始值只能放在等号“=”右边,或者放在花括号“{}”里,不能使用圆括号“()”;数据成员的类外初始化:类名字 ::(作用域符) 函数名,并且这是类的成员函数,不同于全局函数,成员函数定义虽处于类定义的花括号外,但还是在类作用域内,可以自由访问类的成员,不需要成员访问语法。

        访问控制和封装:C++通过限定成员的访问权限来设置边界,实现信息隐藏,访问限定符(关键public.private.protected),语法:struct 类名{public:共有成员声明;private:私有成员声明;protected:被保护成员声明;};访问限定符在类定义中的出现顺序和出现次数没有限制,一个访问限定符的作用会持续到出现下一个访问限定符或类定义结束,如果没有指定访问限定符,struct 成员的默认访问限制为public

        类和对象:将数据和操作捆绑在一起,并加上访问控制,称为封装,数据描述对象的属性,操作描述对象的行为,对象是客观事物的抽象,类是一组具有相同属性和行为的对象的抽象,对象又称类的实例,C++中的类是一种数据类型,对象是这种类型的变量,C++引入了一个关键字class 来定义类,如果class的成员没有设置访问限定符,则默认为private。

        this指针:每个成员函数都有一个隐含的参数,指向接收消息的对象,称为this指针,X类的this指针的类型是X*,this指针是一个常量,含有当前实施调用的对象的地址,不能改变this指针的值,也不能取this指针的地址。this在成员函数中最常用于:区分与数据成员同名的变量 ;返回当前对象;取得当前对象地址。

        访问器和修改器:将数据成员限定为private,并提供public成员函数来对其进行访问,这种成员函数被称为访问器和修改器,并常以一对getX()和setX() 函数的形式出现。

        友元:如果想让非成员函数访问一个类中的私有数据,应该在类中将这个函数声明为friend,友元必须在被访问的类中声明,friend关系不可传递,如果A是类B的友元,而类B是类C的友元,A不会自动成为C的友元,应该尽量避免使用友元,友元会破坏类的封装性,增加类之间的耦合度。

        构造函数:构造函数在创建对象时被自动调用,负责初始化对象,构造函数的名字和类名字相同,它没有返回类型,构造函数的参数通常为数据成员提供初始值;构造函数初始化列表:类中有些成员不能使用赋值的方式提供初始值,如引用成员,const 数据成员,类类型的数据成员,针对这种情况的特殊语法称为构造函数初始化列表,形式:成员1(初始值1)[,成员2(初始值2),…],初始化列表位于构造函数的参数表之后,函数体之前,构造函数(参数表) : 初始化列表 { 函数体 }。

       委托构造函数:委托构造函数使用所属类的其他构造函数执行自己的初始化过程,把部分或全部职责委托给了其他构造函数,语法形式:ClassName(参数表):ClassName(参数表){函数体}。

        析构函数:负责在对象生存期结束时返回相关资源和自动释放资源,当对象离开作用域时,或者用delete 释放在堆上创建的对象时,析构函数都会被自动调用,析构函数的名字是类名字前加波浪线“~”,析构函数没有返回类型,也没有任何参数。

       const成员:

                const数据成员:const 可以限定类中的数据成员,描述对象中的常量,在数据成员声明前加const 关键字就将其限定为常量,const 数据成员在构造函数的初始化列表中初始化,创建对象时初始化其中的const 数据成员,之后const 成员的值在对象的整个生存期中都不会改变。

                 const成员函数:将一个成员函数声明为const,表明这个成员函数不会修改对象的数据成员,能保证对象的常量性,声明const成员函数的语法形式:返回类型 成员函数名(参数表) const;定义const成员函数的语法形式:返回类型 成员函数名(参数表) const { 函数体 },只有声明为const 的成员函数才可以被const 对象调用,const 对象不能调用非const 成员函数,非const 对象可以调用const 成员函数,const 成员函数中不能修改类的数据成员,const 成员函数中不能调用其他非const 成员函数。

        static成员函数(属于整个类,不属于某个对象):static数据成员被当作该类类型的全局变量,对非static数据成员,每个对象都有自己的副本,static数据成员对整个类类型只有一个,由这个类型的所有对象共享访问。static数据成员:在类的数据成员声明前加关键字static,就使该数据成员成为静态的,初始化:static数据成员属于类,不属于某个特定对象,因而不能在构造函数中初始化,static数据成员在类定义之外初始化,使用类名字限定。

          数据成员的指针:如果有一个指向类成员的指针p,要取得指针指向的内容,必须用“*”运算符解引用,*p是一个类的成员,不能直接使用,必须指定对象或指向对象的指针来选择这个成员,语法:对象.* 指向成员的指针,对象指针 ->* 指向成员的指针;成员函数的指针:返回类型 (类名::*指向成员函数的指针)(参数表)。

          本章学习了类,这是C++面对对象程序设计的重要的一部分,这章有许多的理论知识,最近没有做很多的题,但当自己做作业时,发现虽然学了这么多,但还是有些不会,所以这章学习要重在用,只有在程序中才能发现自己的问题。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值