函数重载/类和对象(P14-P60)

函数重载/类和对象(P14-P60) 一、函数重载–基本语法1.函数重载的作用函数名相同提高复用性。2.函数重载满足的条件(1)同一个作用域(2)函数名称相同(3)函数参数类型不同或者个数不同或者顺序不同。函数的返回值不可以作为函数重载的条件。#includeiostreamusingnamespacestd;//函数重载//可以让函数名相同提高复用性。//函数重载的条件 同一个作用域下函数名称相同。函数参数类型不同个数不同顺序不同。//函数的返回值不可以作为函数重载的条件比如void func(),int funcvoidfunc(){coutfunc的调用endl;}voidfunc(inta){coutfuncint a的调用endl;}voidfunc(doublea){coutfuncdouble a的调用endl;}voidfunc(inta,doubleb){coutfuncint a,double b的调用endl;}voidfunc(doublea,intb){coutfuncdouble a,int b的调用endl;}intmain(){func(10);func(3.14);func(10,3.14);func(3.14,10);}funcinta的调用 funcdoublea的调用 funcinta,doubleb的调用 funcdoublea,intb的调用二、函数重载的注意事项#includeiostreamusingnamespacestd;//函数重载的注意事项//1.引用作为重载的条件voidfunc(inta){//int a10不合法//引用必须在合法的内存空间一般放在栈和堆区//10是放在常量区coutfunc(int a)调用endl;}voidfunc(constinta){//const是只读//const int a10加上const会创建一个临时的空间指向a合法coutfunc(const int a)调用endl;}//2.函数重载碰到的默认参数voidfunc2(inta,intb10){coutfunc2(int a,int b)的调用endl;}voidfunc2(inta){coutfunc2(int a)的调用endl;}intmain(){inta10;func(a);func(10);//func2(10);//当函数重载碰到默认参数出现二义性报错尽量避免会报错}//输出func(inta)调用func(constinta)调用func2(inta)的调用三、类和对象-封装-属性和行为作为整体。c面向对象的三大特性封装、继承和多态。对象有属性和行为。1封装1封装说C面向对象三大特性之一。2封装的意义将属性和行为作为一个整体表现生活中的事物。将属性和行为加以权限控制。3在设计类的生活属性和行为写在一起表现事物2语法class类名{访问权限属性/行为};(3)代码实现示例1:设计圆类求圆的周长类和对象-封装-属性和行为作为整体//示例1:设计圆类求圆的周长//类和对象-封装-属性和行为作为整体#includeiostreamusingnamespacestd;constdoublePI3.14;//设计一个圆类求圆的周长//圆求周长的公式2*PI*半径//class 设计一个类类后面跟着的就是类的名称。classCircle{//访问权限public://属性intm_r;//行为//获取圆的周长吗doublecalZC(){return2*PI*m_r;}};intmain(){//通过圆类创建具体的圆对象//实例化通过一个类创建一个对象的过程。Circle c1;//给圆对象的属性进行赋值c1.m_r10;cout圆的周长为c1.calZC()endl;}//输出圆的周长为62.84代码实现设计一个学生类属性有姓名和学号可以给姓名和学号赋值显示学生的姓名和学号。#includeiostreamusingnamespacestd;classStudent{public://属性string m_name;intm_id;voidsetName(string name){m_namename;}voidsetID(intid){m_idid;}voidshowStudent(){cout姓名m_name,学号m_idendl;}};intmain(){//创建一个具体的学生 实例化对象Student s1;//给s1对象进行属性赋值s1.m_nameLL;s1.m_id111;//显示学生信息s1.showStudent();Student s2;s2.m_namePPQQ;s2.m_id2;s2.showStudent();return0;}//输出姓名LL,学号111姓名PPQQ,学号2给学生姓名和学号赋值#includeiostreamusingnamespacestd;classStudent{public://属性string m_name;intm_id;//给姓名赋值voidsetName(string name){m_namename;}voidsetID(intid){m_idid;}voidshowStudent(){cout姓名m_name,学号m_idendl;}};intmain(){//创建一个具体的学生 实例化对象Student s1;//给s1对象进行属性赋值//s1.m_nameLL;s1.m_id111;s1.setName(LL);s1.setID(111);//显示学生信息s1.showStudent();Student s2;s2.m_namePPQQ;s2.m_id2;s2.showStudent();return0;}姓名LL,学号111姓名PPQQ,学号2类中的属性和行为我们统一称为成员。属性也称为成员属性和成员变量。行为也称成员函数和成员方法。四、类和对象–封装-访问权限类在设计时候可以把属性和行为放在不同的权限下加以控制访问权限有三种public(公共权限、protected保护权限、private私有权限。public 类内、类外都可以访问。protected类内可以访问类外不可以访问。private类内可以访问类外不可以访问。#includeiostreamusingnamespacestd;classPerson{public:string m_Name;protected:string m_Car;private:intm_Password;public://Person类里面都属于类内这边可以换成protected、privatevoidfunc(){m_NameLLL;m_Car法拉利;m_Password123456;}};intmain(){//实例化一个具体的对象Person p1;p1.m_NameOLL;p1.func();//p1.m_Car奔驰//保护权限在类外访问不到//p1.m_Password123//私有权限在类外访问不到return0;}