EC+面向对象程序设计 计算机与信息学院 罗宪
C++面向对象程序设计 计算机与信息学院 罗宪
第三章类和对象 本章主要介绍: >类和对象的基本概念(类的定义、对象的定义) →>构造函数与析构函数(对象的初始化) >对象数组、对象指针及引用 ●>向函数传递对象 >静态成员 >常量对象及常量成员 >友元 2>对象成员 >对象的存储类 >标识符的作用城、可见性和名空间
第三章 类和对象 本章主要介绍: ➢ 类和对象的基本概念(类的定义、对象的定义) ➢ 构造函数与析构函数(对象的初始化) ➢ 对象数组、对象指针及引用 ➢ 向函数传递对象 ➢ 静态成员 ➢ 常量对象及常量成员 ➢ 友元 ➢ 对象成员 ➢ 对象的存储类 ➢ 标识符的作用域、可见性和名空间
第一节类和对象的基本概念 (P84-98) 结构与类 C++中的类实际上是在C语言的结构体的基础上扩 充得到的。即C++的结构体的成员中可用函数成员 函数: >C++结构体的成员分为数据成员及成员函数 >数据成员分为公有成员( public私有成员( private 保护成员( protected (-)C++对结构的扩充 例【31已知复数的实部、虛部,分别输出复数的实部 虚部及绝对值初步熟悉成员函数
第一节 类和对象的基本概念 (P84-98) 一、结构与类 C++中的类实际上是在C语言的结构体的基础上扩 充得到的。即C++的结构体的成员中可用函数——成员 函数: ➢C++结构体的成员分为数据成员及成员函数 ➢数据成员分为公有成员(public)、私有成员(private)、 保护成员(protected)。 ㈠ C++对结构的扩充 例【3.1】 已知复数的实部、虚部,分别输出复数的实部、 虚部及绝对值——初步熟悉成员函数
第一节类和对象的基本概念 #include #include struct complex i double real double imag; void init(double r, double i f real=r;imag=i;) double realcomplex() return real,) double imagcomplex() ireturn imag; double abscomplexo) i double t; t=sqrt(real*real+imag*imag) return t)
第一节 类和对象的基本概念 #include #include struct complex { double real; double imag; void init(double r,double i) { real=r;imag=i;} double realcomplex( ) {return real;} double imagcomplex( ) {return imag;} double abscomplex( ) { double t; t=sqrt(real*real+imag*imag); return t;} };
第一节类和对象的基本概念 void maino i complex A Aint(3.0,4.0) cout << real of complex A=". cout <<A realcom of complex lex o<<endl; cout≤<imag A- cout <<A. imagcomplex(< <endI cout <<abs of complex A= 程序运行输出结果 real of complex a=3 imag of complex A=4 abs of complex a=5
第一节 类和对象的基本概念 void main() { complex A; A.init(3.0,4.0); cout <<"real of complex A="; cout <<A.realcomplex()<<endl; cout <<"imag of complex A="; cout <<A.imagcomplex()<<endl; cout <<"abs of complex A= "; cout <<A.abscomplex()<<endl; } 程序运行输出结果: real of complex A=3 imag of complex A=4 abs of complex A=5
第一节类和对象的基本概念 C++结构的扩充: >在C++中,在定义一个结构时,可以定义成员函数; 如程序中的int()、 realcomplex()、 imagcomplex() abscomplex()等; >在C+的结构中,成员分公有成员( public和私有成员 ( private),私有成员只能在结构内使用,公有成员既 可以在结构内使用,亦可在其它地方使用 >在结构中,未指明为公有成员或私有成员的成员默认 为公有成员 成员函数的调用方法:结构变量成员函数实参表) 上例结构体的定义部分程序可改为:
第一节 类和对象的基本概念 C++结构的扩充: ➢在C++中,在定义一个结构时,可以定义成员函数; 如程序中的init( )、realcomplex( )、imagcomplex( )、 abscomplex ( )等; ➢在C++的结构中,成员分公有成员(public)和私有成员 (private),私有成员只能在结构内使用,公有成员既 可以在结构内使用,亦可在其它地方使用; ➢在结构中,未指明为公有成员或私有成员的成员默认 为公有成员; ➢成员函数的调用方法:结构变量.成员函数(实参表); 上例结构体的定义部分程序可改为:
第一节类和对象的基本概念 struct complex i private de ouble real double imag; public void init(double r, double i f real=;imag=i,] double realcomplex() i return real, double imagcomplex() freturn imag: double abscomplexo) i double t; t=sqrt(real real+imag*imag); return t:l
第一节 类和对象的基本概念 struct complex { private double real; double 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=sqrt(real*real+imag*imag); return t;} };
第一节类和对象的基本概念 (C+对结构的扩充类 >C++提供了一种比结构体更为安全的数据类型类 >类与结构的扩充形式非常相似,但凡是未定义为公有 成员( public)或保护成员 protected)的成员均为私有 成员( private)封装性的体现。 例【3.2】将例【31】用类表示
第一节 类和对象的基本概念 ㈡ C++对结构的扩充——类 ➢C++提供了一种比结构体更为安全的数据类型——类。 ➢类与结构的扩充形式非常相似,但凡是未定义为公有 成员(public)或保护成员(protected)的成员均为私有 成员(private)——封装性的体现。 例【3.2】将例【3.1】用类表示
第一节类和对象的基本概念 #include #include Class complex i private double real: double imag; public void init(double r, double i) I real=imag double realcomplex() [return real: 1 double imagcomplex() freturn imag: double abscomplex() i double t' t=sqrt(realreal+imag*imag); eturn to
第一节 类和对象的基本概念 #include #include class complex { private: double real; double 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=sqrt(real*real+imag*imag); return t;} };
第一节类和对象的基本概念 void maino i complex A: A init(30,4.0) cout <<"real of complex A= cout<<A. realcomplexo<<endl; cout <<imag of complex A= cout<<A. imagcomplexo<<endl; cout <<abs of complex A=". cout<<A.abscomplexo<<end;
第一节 类和对象的基本概念 void main() { complex A; A.init(3.0,4.0); cout <<"real of complex A="; cout<<A.realcomplex()<<endl; cout <<"imag of complex A="; cout<<A.imagcomplex()<<endl; cout <<"abs of complex A= "; cout<<A.abscomplex()<<endl; }