资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式嵌入式Linux下下QT程序设计程序设计主讲:成宝宗嵌入式下程序设计类与对象(上)基础构造函数析构函数类与对象嵌入式下程序设计类与对象(上)基础构造函数析构函数主要内容:类与对象的基本概念构造函数拷贝构造函数析构函数嵌入式下程序设计类与对象(上)基础构造函数析构函数4c+中的类类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。利用类可以实现数据的封装、隐藏、继承与派生。利用类易于编写大型复杂程序,其模块化程度比C中采用函数更高。嵌入式下程序设计类与对象(上)基础构造函数析构函数5类的声明形式 类是一种用户自定义类型,声明形式:class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员嵌入式下程序设计类与对象(上)基础构造函数析构函数访问权限公有类型成员在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。私有类型成员在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。保护类型与private类似,其差别表现在继承与派生时对派生类的影响不同。嵌入式下程序设计类与对象(上)基础构造函数析构函数类的成员成员数据与一般的变量声明相同,但需要将它放在类的声明体中。成员函数在类中说明原型,可以在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。允许声明重载函数和带默认形参值的函数嵌入式下程序设计类与对象(上)基础构造函数析构函数8类的成员class clock public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour, hinute, second;成员数据成员函数嵌入式下程序设计类与对象(上)基础构造函数析构函数成员函数的实现void Clock:setTime(int newH, int newM,int newS) hour = newH; minute = newM; second = newS;void Clock:showTime() cout hour : minute : second;9嵌入式下程序设计类与对象(上)基础构造函数析构函数10对象类的对象是该类的某一特定实体,即类类型的变量。声明形式: 类名 对象名;例: Clock myClock;嵌入式下程序设计类与对象(上)基础构造函数析构函数11类中成员的访问方式类中成员互访直接使用成员名类外访问使用“对象名.成员名”方式访问 public 属性的成员嵌入式下程序设计类与对象(上)基础构造函数析构函数12类的应用举例#includeusing namespace std;class Clock ./类的声明略/.类的实现略int main() Clock myClock;myClock.setTime(8, 30, 30);myClock.showTime();return 0;嵌入式下程序设计类与对象(上)基础构造函数析构函数13构造函数构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。在对象创建时由系统自动调用。如果程序中未声明,则系统自动产生出一个隐含的参数列表为空的构造函数允许为内联函数、重载函数、带默认形参值的函数嵌入式下程序设计类与对象(上)基础构造函数析构函数14构造函数举例class Clock public:Clock(int newH,int newM,int newS);/构造函数声明void setTime(int newH, int newM, int newS);/成员函数void showTime();/成员函数private:int hour, minute, second;构造函数的实现:Clock:Clock(int newH, int newM, int newS) hour = newH;minute = newM;second = newS;【构造函数的实现: 在函数名与函数体之间添加初始化列表:成员(初始化值)或者使用默认参数!Clock:Clock(int newH, int newM, int newS=0):hour(newH),minute(newM),second(newS)】建立对象时构造函数的作用:int main() Clock c(0,0,0); /隐含调用构造函数,将初始值作为实参。 c.showTime();return 0;嵌入式下程序设计类与对象(上)基础构造函数析构函数15拷贝构造函数拷贝构造函数是重载构造函数的一种重要形式,它的功能是使用一个已经存在的对象去初始化一个新创建的同类的对象,它可以将一个已有对象的数据成员的值拷贝给正在创建的另一个同类的对象。 class 类名 public : 类名(形参);/构造函数 类名(类名 &对象名);/拷贝构造函数 .;类名:类(类名 &对象名)/拷贝构造函数的实现 函数体 嵌入式下程序设计类与对象(上)基础构造函数析构函数16拷贝构造函数举例class Clock public:Clock(int newH,int newM,int newS);/构造函数声明Clock(Clock &p);/拷贝构造函数声明void setTime(int newH, int newM, int newS);/成员函数void showTime();/成员函数private:int hour, minute, second;拷贝构造函数的实现:Clock:Clock(Clock &p) hour = p.hour;minute = p.minute;second = p.second;使用已有的对象,初始化另一个对象:int main() Clock c(21,59,23); Clock b = c; b.showTime();return 0;嵌入式下程序设计类与对象(上)基础构造函数析构函数拷贝构造函数调用 拷贝构造函数在三种情况下会被调用: 用类的一个对象去初始化该类的另一个对象时。 函数的形参是类的对象,调用函数进行形参和实参的结合时。 函数的返回值是类的对象,函数执行完返回调用者时。嵌入式下程序设计类与对象(上)基础构造函数析构函数18隐含的拷贝构造函数如果程序员没有为类声明拷贝初始化构造函数,则编译器自己生成一个隐含的拷贝构造函数。每一个类都必须有一个拷贝构造函数,但不是都必须要自己定义。如果我们在类中没有定义,则系统会自动帮我们定义一个默认的拷贝构造函数,该函数自动完成将一个对象的所有数据成员复制到另一个对象中的所有操作。嵌入式下程序设计类与对象(上)基础构造函数析构函数析构函数 与构造函数类似的,析构函数也是一种特殊的成员函数,也被声明为公有成员。不同的是,析构函数作用是释放分配给对象的内存空间,并做一些善后工作。析构函数在声明定义和使用的时候需要注意如下的事项:析构函数的名字必须与类名相同,但在名字的前面要加波折号“”。析构函数没有参数,没有返回值,不能重载,在一个类中只能有一个析构函数。当撤销对象时,系统会自动调用析构函数完成空间的释放和善后工作。嵌入式下程序设计类与对象(上)基础构造函数析构函数20析构函数完成对象被删除前的一些清理工作。在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。在使用delete运算符释放它时,也会自动调用其析构函数。如果程序中未声明析构函数,编译器将自动产生一个隐含的析构函数。嵌入式下程序设计类与对象(上)基础构造函数析构函数21构造函数和析构函数举例#include using namespace std;class Clock public:Clock(int newH,int newM,int newS);/构造函数声明Clock(Clock &p);/拷贝构造函数声明 Clock();/析构函数声明void setTime(int newH, int newM, int newS);/成员函数void showTime();/成员函数private:int hour, minute, second;Clock:Clock()/析构函数实现cout“class over!”endl;嵌入式下程序设计类与对象(上)基础构造函数析构函数嵌入式下程序设计类与对象(上)基础构造函数析构函数
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号