第1讲C++在非面向对象方面特性1.pptVIP

  • 2
  • 0
  • 约1.73万字
  • 约 79页
  • 2018-06-07 发布于未知
  • 举报
* * 作用域运算符:: * * 作用域运算符:: 如果程序中有两个同名变量,一个是全局的,另一个是局部的,那么在局部变量的作用域内,局部变量将屏蔽掉全局变量。 那么,如何在局部变量的作用域内使用同名的全局变量呢? 这可以通过作用域运算符“::”来实现。 见下例。 * * 【例1-15】 作用域运算符的使用 void PrintInfo(Student student); //函数原型 int nStudentNumber = 0; //全局变量 int main() { int nStudentNumber = 0; //局部变量 Student Student1; ::nStudentNumber++; //全局变量 cout输入姓名:\n; cinStudent1.m_strName; cout输入编号:\n; cinStudent1.m_strID; cout输入性别(0:男 1:女):\n; cinStudent1.m_cSex; cout输入专业:\n; cinStudent1.m_strMajor; PrintInfo(Student1); cout全局变量(::nStudentNumber)的值为: ::nStudentNumberendl; cout局部变量(nStudentNumber)的值为: nStudentNumberendl; return 0; } * * 函数重载 * * 函数重载 …… void PrintInfo(Student student); //函数原型 void PrintInfo(int nStudentNumber); int nStudentNumber = 0; //全局变量 int main() { int nStudentNumber = 0; //局部变量 Student Student1; ::nStudentNumber++; //全局变量 cout输入姓名:\n; cinStudent1.m_strName; …… PrintInfo(Student1); PrintInfo(::nStudentNumber); return 0; } * * void PrintInfo(Student student) { cout该学生的信息为:\n; cout姓名:student.m_strName 编号:student.m_strID 性别:; if(student.m_cSex == 0) cout男; else cout女; cout 专业:student.m_strMajorendl; } void PrintInfo(int nStudentNumber) { cout学生的人数为:nStudentNumberendl; } * * 说明 (1)函数重载能够在很大程度上方便用户的编程。编译器通过对同名函数的参数类型及参数个数进行分析,就能够区分开不同的重载函数。 (2)函数重载必须通过函数参数的类型或个数的不同来实现。 上例给出了通过函数参数的类型不同进行函数重载的实现,下面给出通过参数个数的不同来进行函数重载的例子。 * * 【例1-17】通过函数参数个数不同实现函数重载 #include iostream using namespace std; double add(double d1, double d2); double add(double d1, double d2, double d3); int main() { double d1, d2, d3; d1 = 1.1; d2 = 2.2; d3 = 3.3; coutd1+d2=add(d1, d2)endl; coutd1+d2+d3=add(d1, d2, d3)endl; return 0; } double add(double d1, double d2) { return d1 + d2;} double add(double d1, double d2, double d3) { return d1 + d2 + d3;} * * 说明 (3)仅仅通过函数的返回值类型不同不能实现函数重载。例如,下面的代码不能实现函数重载,会出现编译错误。 int add(int i, int j); double add(int i, int j); 这是因为在进行函数调用时,这两个函数的调用形式是相同的(例如,都是“add(a,b);”),编译器无法判断哪一个函数与调用形式相匹配。

文档评论(0)

1亿VIP精品文档

相关文档