当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C++面向对象程序设计》第三章 类和对象

资源类别:文库,文档格式:PPT,文档页数:86,文件大小:372.5KB,团购合买
3.1类与对象的基本概念 3.1.1结构与类 1.结构的扩充 C++中对C语言的结构类型进行了扩充,它还可以含有函数。
点击下载完整版文档(PPT)

第三章 类和对象

1 第三章 类和对象

31类与对象的基本概念 311结构与类 结构的扩充 C++中对C语言的结构类型进行了扩充,它还可以含有函数。如: struct complext double real: ∥复数的实部 double imag; ∥复数的虚部 void init( double r, double i)∥给real和imag赋初值 dreal-r; imag=i;) double realcomplexo 取复数的实部值 freturn real; double imagcomplexo 取复数的虚部值 freturn imag; 3 double abscomplexo ∥复数的绝对值 i double t; t=realrealtimag imag return agrt(t); };结构类型中的数据和函数,分别称为数据成员和函数成员

2 3.1 类与对象的基本概念 3.1.1 结构与类 1. 结构的扩充 C++中对C语言的结构类型进行了扩充,它还可以含有函数。如: struct complex{ double real; //复数的实部 double imag; //复数的虚部 void init (double r, double I) //给real和imag赋初值 { real=r; imag=i; } double realcomplex() //取复数的实部值 { return real;} double imagcomplex() //取复数的虚部值 { return imag;} double abscomplex() //求复数的绝对值 { double t; t=real*real+imag*imag; return agrt(t); } };结构类型中的数据和函数,分别称为数据成员和函数成员

六例3.1 void mainO #include <iostre i A init(1. 1, 2.2) lud< th cou<“复数A的实部=“<< A. realcomplexi0<<end struct complex cout<<s 复数A的实部 double res 4 <<A.imagcomplex(<<endl out<<“复数A的绝对值 double im= "<<A. abscomplexo<<endl; void init( freal-r; imag I, double realcomplexo ∥取复数的实部值 i return real; y double imagcomplexo 取复数的虚部值 freturn imag; double abscomplexo ∥复数的绝对值 i double t; t=real real+imag imag; return sqrt(t); }A;

3 **例 3.1 #include #include struct complex{ double real; //复数的实部 double imag; //复数的虚部 void init (double r, double I) //给real和imag赋初值 { real=r; imag=i; } double realcomplex() //取复数的实部值 { return real;} double imagcomplex() //取复数的虚部值 { return imag;} double abscomplex() //求复数的绝对值 { double t; t=real*real+imag*imag; return sqrt(t); } } A; void main() { A.init(1.1,2.2); cout<<“复数A的实部= “<<A.realcomplex()<<endl; cout<<“复数A的实部 = “<<A.imagcomplex()<<endl; cout<<“复数A的绝对值 = “<<A.abscomplex()<<endl; }

2.类的定义(声明) C++中说明类的一般形式为 cisaa 类名{ private:(可缺省) 私有数据成员和函数成员 protected: 保护段 publics 公有数据成员和函数成员 类 class和结构 sturct的主要区别是 class complext 在缺省 private时 private 在类中,成员是私有的 double real, imag; 在结构中,成员是公有的 public: void init(double r, double ii rear; imag=i;) double realcomplexo i return real; double imagcomplexoi return imag: l double abscomplexo i double t; t=realrealtimag *imag; return sqrt(t);)

4 2. 类的定义(声明) C++中说明类的一般形式为 clsaa 类名 { private: (可缺省) 私有数据成员和函数成员 protected: 保护段 public: 公有数据成员和函数成员 }; class complex{ private: double real, imag; public: void init (double r, double i) { real=r; imag=i; } double realcomplex() { return real;} double imagcomplex() { return imag;} double abscomplex() { double t; t=real*real+imag*imag; return sqrt(t); } }; 类 class 和结构 sturct 的主要区别是: 在缺省 private 时, 在类中,成员是私有的 在结构中,成员是公有的

例3.2 #include #include class complex pI rivate double real, imag; public void init(double r, double i)i real=r; imag=i; double realcomplexo i return real; 3 double imagcomplexo return imag:) double abscomplexo i double t; t=realrealtimag *imag; return sqrt(t); void main( f complex A: Ainit(1. 1, 2.2) cout<<“复数A的实部=“<<A. realcomplex0<<end; cout<“复数A的实部=“<< A. imagcomplexo<<endl; cout<“复数A的绝对值=“<< A. abscomplex(<<end;

5 例 3.2 #include #include class complex{ private: double real, imag; public: void init (double r, double i) { real=r; imag=i; } double realcomplex() { return real;} double imagcomplex() { return imag;} double abscomplex() { double t; t=real*real+imag*imag; return sqrt(t); } }; void main( ) { complex A; A.init(1.1,2.2); cout<<“复数A的实部= “<<A.realcomplex()<<endl; cout<<“复数A的实部= “<<A.imagcomplex()<<endl; cout<<“复数A的绝对值= “<<A.abscomplex()<<endl; }

312成员函数的定义 第一种方式是在类定义中只给出成员函数的原型(或者说声明) 而成员函数在类的外部定义。在外部定义的一般形式是: 返回类型类名:函数名(参数表){ ∥函数体 class point ∥定义类 point private: Int x, y; ∥数据成员,二个整数作为xy坐标 ublic: void setpoint(int,int);∥函数成员,名为 setpoint,有二个 整数形参,用于设置坐标值,具体如何在外部再定义,这叫函数 的原型(或者说声萌 int getxo;〃取x坐标值的成员函数 getxo的函数原型 nt ge /类定义结束 取y巫标值的成员函数 geto的函数原型 viod point: setpoint(inta,intb)∥成员函数 setpoint具体定义 b;} int point: getxo ∥成员函数getx具体定义 return x int point: grtyo ∥成员函数gety具体定义 return y

6 3.1.2 成员函数的定义 第一种方式是在类定义中只给出成员函数的原型(或者说声明), 而成员函数在类的外部定义。在外部定义的一般形式是: 返回类型 类名::函数名(参数表){ // 函数体 } class point{ // 定义类 point private: int x, y; // 数据成员,二个整数作为x,y 坐标 public: void setpoint(int, int); // 函数成员,名为setpoint ,有二个 整数形参,用于设置坐标值,具体如何在外部再定义,这叫函数 的原型(或者说声明) int getx(); //取 x 坐标值的成员函数getx()的函数原型 int gety(); //取 y 坐标值的成员函数gety()的函数原型 }; //类定义结束 viod point::setpoint(int a, int b) //成员函数 setpoint 具体定义 { x=a; y=b; } int point:: getx() //成员函数getx 具体定义 { return x; } int point:: grty() //成员函数gety 具体定义 { return y; }

说明 (1)在所定义的成员函数名之前应缀上类名,在类名和函数名之 间应加上分隔符“:”,例如上面例子中的“ point:” (2)在定义成员函数时,对函数所带的参数,不但要说明它的类 型,还要指出其参数名。 (3)在定义成员函数时,其返回类型一定要与函数原型中声明的 返回类型匹配。 第二种方式是将成员函数定义在类的内部,即定义为内置函数。 又可用两种 (1)隐式定义即函数的原型和定义都在类的内部完成 class pointt ∥定义类 point private: Int x, y; ∥数据成员,二个整数作为x,y坐标 public: void setpoint(inta,intb)∥函数成员 {x=a;y=b;} int getxo i return x;) int geto i return y;) };1类定义结束

7 说明 (1)在所定义的成员函数名之前应缀上类名,在类名和函数名之 间应加上分隔符“::”,例如上面例子中的“point::”。 (2)在定义成员函数时,对函数所带的参数,不但要说明它的类 型,还要指出其参数名。 (3)在定义成员函数时,其返回类型一定要与函数原型中声明的 返回类型匹配。 第二种方式是将成员函数定义在类的内部,即定义为内置函数。 又可用两种: (1) 隐式定义 即函数的原型和定义都在类的内部完成 class point{ // 定义类 point private: int x, y; // 数据成员,二个整数作为x,y 坐标 public: void setpoint(int a, int b) // 函数成员 { x=a; y=b; } int getx() { return x; } int gety() { return y; } }; //类定义结束

(2)显式定义 即在类定义中仍只给出成员函数的原型(或者说声明),而成员函 数在类的外部定义。但函数定义前冠以关键字“ inline”,以此显 式地说明这是一内置函数。 class pointt ∥定义类 point private: int x, yi ∥数据成员,二个整数作为x,y坐标 public: void setpoint(int,int);∥/函数成员 setpoint,有二个整数形参 int getxo;取x坐标值的成员函数 getxO的函数原型 int gety(;∥取y坐标值的成员函数 geto的函数原型 };1类定义结束 inline viod point: setpoint(inta,intb)∥内置成员函数具体定义 {x=a;y=b;} inline int point: getxo /置成员函数gex具体定义 i return x;j inline int point: grtyo /内置成员函数gety具体定义 freturn y;) 把成员函数设置成内置,可提高执行的效率,但函数体较长的成员 函数都不设置成内置

8 (2) 显式定义 即在类定义中仍只给出成员函数的原型(或者说声明),而成员函 数在类的外部定义。但函数定义前冠以关键字“inline”,以此显 式地说明这是一内置函数。 class point{ // 定义类 point private: int x, y; // 数据成员,二个整数作为x,y 坐标 public: void setpoint(int, int); // 函数成员setpoint ,有二个整数形参 int getx(); //取 x 坐标值的成员函数getx()的函数原型 int gety(); //取 y 坐标值的成员函数gety()的函数原型 }; //类定义结束 inline viod point::setpoint(int a, int b) //内置成员函数具体定义 { x=a; y=b; } inline int point:: getx() //内置成员函数getx 具体定义 { return x; } inline int point:: grty() //内置成员函数gety 具体定义 { return y; } 把成员函数设置成内置,可提高执行的效率,但函数体较长的成员 函数都不设置成内置

33对象的定义及引用 类与对象的关系 可以用整型int和整型变量i之间的来类比。inti 2.对象的定义 (1)在声明类的同时,直接定义对象op1,op2 class point ∥定义类 point private: Int x, y; ∥数据成员,二个整数作为xy坐标 public: void setpoint(int, int) int getx o; int geto 3 opl, op2 (2)声明了类之后,在使用时再定义对象,定义的格式与一般变 量的定义格式相同: point opl.,op2; 说明:(1)声明了一个类便声明了一种类型,它并不接收和存储 具体的值,只有定义了对象后,系统才为对象并且只为对象分配 存储空间。 (2)在声明类的同时定义的对象是一种全局对象,在的 生存期内任何函数都可以使用

9 3.1.3 对象的定义及引用 1. 类与对象的关系 可以用整型int 和整型变量i 之间的来类比。int i ; 2. 对象的定义 (1) 在声明类的同时,直接定义对象 op1, op2 class point{ // 定义类 point private: int x, y; // 数据成员,二个整数作为x,y 坐标 public: void setpoint(int, int); int getx(); int gety(); } op1, op2; (2) 声明了类之后,在使用时再定义对象,定义的格式与一般变 量的定义格式相同: point op1, op2; 说明:(1)声明了一个类便声明了一种类型,它并不接收和存储 具体的值,只有定义了对象后,系统才为对象并且只为对象分配 存储空间。 (2) 在声明类的同时定义的对象是一种全局对象,在它的 生存期内任何函数都可以使用它

3.对象的引用 对象的引用是指对象的成员的引用,不论是数据成员,还是成员 函数,只要是公有的,就可以被外部函数直接引用,引用格式是 对象名.数据成员名或对象名.成员函数名(实参表) 例3.3 #include void maino class poi i point opl, op2 private: int i, j; inx, opl setpoint(,2);调用op1的 Setpoint0,初始化对象op1 public: void 0p2 setpoint3,4);/调用op2的 Setpoint0,初始化对象op2 i=op1geto;/调用op1的getO,取op1的x值 int ge j= opl. geto;〃/调用op1的 geto,取op1的y值 int ge cout<<“opli=”<i<<“oplj=”< j<<endl i=0p2gexO);∥调用op2的 getxO,取op2的x值 j=0p2 geto;∥调用op2的 geto,取op2的y值 cout<<“op2i=”<“0p2j=”j<endl;

10 3.对象的引用 对象的引用是指对象的成员的引用,不论是数据成员,还是成员 函数,只要是公有的,就可以被外部函数直接引用,引用格式是: 对象名. 数据成员名 或 对象名. 成员函数名(实参表) 例 3.3 #include class point{ private: int x, y; public: void setpoint(int a, int b) { x=a; y=b; } int getx() { return x; } int gety() { return y; } }; void main() { point op1, op2; int i, j; op1.setpoint(1,2);//调用op1的setpoint(),初始化对象op1 op2.setpoint(3,4);//调用op2的setpoint(),初始化对象op2 i=op1.getx(); //调用op1的getx(),取op1的x值 j=op1.gety(); //调用op1的gety(),取op1的y值 cout<<“op1 i=”<<i<<“ op1 j=”<<j<<endl; i=op2.getx(); //调用op2的getx(),取op2的x值 j=op2.gety(); //调用op2的gety(),取op2的y值 cout<<“op2 i=”<<i<<“ op2 j=”<<j<<endl; }

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共86页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有