C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计
“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 类和对象的定义 对象数组 this指针 构造函数 对象作为普通函数的参数与返回值 析构函数 面向对象程序设计 对象数组 对象作为普通函数的参数与返回值 对象指针和堆对象 this指针 复制构造函数 内部类和命名空间 C++语言程序设计
基本知识 a C++语言程序设计
7.1 类和对象的定义 类的实现 C++语言程序设计 类的成员函数描述的是类的行为或操作。 7.1 类和对象的定义 类的实现 类的成员函数描述的是类的行为或操作。 函数的原型声明要在类的主体中,而函数的具体实现一般写在类声明之外。 定义类的成员函数 成员函数可以访问本类的任意成员! 返回值类型 类名::成员函数名(参数表) { 函数体 } 作用域操作符 表示函数属于哪个类 C++语言程序设计
一般将类的实现单独写到扩展名为.cpp的原文件中 7.1 类和对象的定义 类的实现举例 //实现类成员函数的源文件:Clock.cpp #include "Clock.h" void Clock::SetTime(int newH,int newM,int newS)//SetTime()函数定义 { Hour=newH; Minute=newM; Second=newS; } void Clock::ShowTime() //ShowTime()函数定义 cout<<Hour<<":"<<Minute<<":"<<Second<<endl; 一般将类的实现单独写到扩展名为.cpp的原文件中 文件名同类的声明文件名一致 C++语言程序设计
7.1 类和对象的定义 类的成员函数还可以有多种形态——参数带默认值 class Clock { public: 7.1 类和对象的定义 类的成员函数还可以有多种形态——参数带默认值 class Clock { public: void SetTime(int newH=0,int newM=0,int news=0); void ShowTime(); private: int Hour; int Minute; int Second; }; C++语言程序设计
7.1 类和对象的定义 类的成员函数还可以有多种形态——函数实现直接放在类的声明中 class Clock { public: 7.1 类和对象的定义 类的成员函数还可以有多种形态——函数实现直接放在类的声明中 class Clock { public: void SetTime(int newH=0,int newM=0,int news=0); void ShowTime(){ cout<<Hour<<":"<<Minute<<":"<<Second<<endl; } private: int Hour; int Minute; int Second; }; C++语言程序设计
7.1 类和对象的定义 类的成员函数还可以有多种形态——函数重载 class Clock { public: 7.1 类和对象的定义 类的成员函数还可以有多种形态——函数重载 class Clock { public: void SetTime(int newH=0,int newM=0,int news=0); void ShowTime(){ cout<<Hour<<":"<<Minute<<":"<<Second<<endl; } void ShowTime(int n){ cout<<Hour<<“时”<<Minute<<“分”<<Second<<“秒”<<endl; } private: int Hour, Minute, Second; }; C++语言程序设计
声明了类及其对象,在类的外部就可以访问对象的公有成员了。 7.1 类和对象的定义 对象的定义和使用 对象,又称为类的实例 类的成员是抽象的,对象的成员才是具体的 类声明中的数据成员一定不能有具体的属性值 只有对象的成员才会有具体的属性值 声明了类及其对象,在类的外部就可以访问对象的公有成员了。 公有成员可以是数据成员,也可以是函数成员 定义一个对象和定义一个一般变量相同,语法形式为: 类名称 对象名称; C++语言程序设计
7.1 类和对象的定义 #include “Clock.h” void main() { Clock myclock; 7.1 类和对象的定义 #include “Clock.h” void main() { Clock myclock; myclock.SetTime(12, 5, 0); myclock.ShowTime(); } C++语言程序设计
7.1 类和对象的定义 类的作用域 类作用域是指类定义和相应的成员函数定义的范围,通俗地称为类的内部。 7.1 类和对象的定义 类的作用域 类作用域是指类定义和相应的成员函数定义的范围,通俗地称为类的内部。 C++认为一个类的全部成员都是一个整体的相关部分。 一个类的所有成员位于这个类的作用域内,在该范围内,一个类的成员函数对本类的其它成员具有无限制的访问权。 void Clock::SetTime(int newH,int newM,int newS)//SetTime()函数定义 { Hour=newH; Minute=newM; Second=newS; } C++语言程序设计
7.1 类和对象的定义 类的可见性 类名实际是个类型名,允许类与其他类型变量或其他函数同名。 7.1 类和对象的定义 类的可见性 类名实际是个类型名,允许类与其他类型变量或其他函数同名。 在类的内部,与类或类的成员同名的全局变量名或函数名不可见。 void func( ) { Clock a; //定义对象时要用到类名 int Clock=10; //变量名和类名相同 Clock++; //… }; int Clock( ){return 1;} //定义函数 class Clock{ //定义类 public : int f(){return Clock();} //调用函数错误 }; 从程序可读性考虑,一般不要让类名和其他变量、函数用同样的名字。 C++语言程序设计