C++随笔——成员函数的相互调用问题:
来源:互联网 发布:宏业软件好多钱 编辑:程序博客网 时间:2024/06/04 20:03
C++ 程序设计 Y.Daniel Liang 11章例子:Course
Course.h
#ifndef COURSE_H#define COURSE_H#include <string>using namespace std;class Course{public:Course(const string& courseName,int Capacity);~Course();string getCoureName() const;void addStudent(const string& name);void dropStudent(const string& name);string* getStudent() const;int getNumberOfStudents() const;void printStudent();private:string courseName;string* student;int numberOfStudent;int Capacity;};#endif COURSE_H
Course.cpp
#include <iostream>#include "Course.h"#include<algorithm>using namespace std;Course::Course(const string&courseName ,int Capacity){numberOfStudent = 0;this->courseName = courseName;this->Capacity = Capacity;student = new string[Capacity];}Course::~Course(){delete []student;}string Course::getCoureName() const{return courseName;}void Course::addStudent(const string& name){if(numberOfStudent < Capacity){ student[numberOfStudent] = name;numberOfStudent++;}else{cout << "学生太多了" << endl;return;}}void Course::dropStudent(const string& name){//string* pFindName = find(student,student+numberOfStudent,name);if(pFindName != student+numberOfStudent){cout << "this student has been found" << "at position" << " " <<pFindName - student << endl;int postion = pFindName - student;for(int i = postion+1; i < numberOfStudent ;i++){student[i-1] = student[i];}numberOfStudent--;}else{cout << name << "is not found" << endl;}}string* Course::getStudent() const{return student;} int Course::getNumberOfStudents() const{return numberOfStudent;}int getNumberOfStudents(){return 1;}void Course::printStudent(){for (int i = 0 ;i < getNumberOfStudents();i++) //屏蔽了 全局的 函数 getNumberOfStudents(),效果和 Course::getNumberOfStudents() 相同。{cout << student[i] <<",";}}
TestCourse.cpp
#include <iostream>#include <string>#include "Course.h"using namespace std;int main(void){int a;Course course1("Data_Structure",10);Course course2("Database_Systems",15);course1.addStudent("PJ");course1.addStudent("BS");course1.addStudent("AK");course2.addStudent("PJ");course2.addStudent("SS");cout << "Number of student in course1:" << course1.getNumberOfStudents() << "\n";string* students = course1.getStudent();course1.printStudent();cout << " \n Number of students in course2:" << course2.getNumberOfStudents() << "\n";students = course2.getStudent();course2.printStudent();course1.dropStudent("BS");course1.printStudent();cin >> a;return 0;}
在 Course::printStudent(){
for (int i = 0 ;i < getNumberOfStudents();i++) //屏蔽了 全局的 函数 getNumberOfStudents(),效果和 Course::getNumberOfStudents() 相同。
{
cout << student[i] <<",";
}
}
for (int i = 0 ;i < getNumberOfStudents();i++) //屏蔽了 全局的 函数 getNumberOfStudents(),效果和 Course::getNumberOfStudents() 相同。
{
cout << student[i] <<",";
}
}
中调用的 getNumerOfStudent() 为自己的成员函数 Course::getNumberOfStudent(),而不是 在上面定义的全局命名空间的 getNumberOfStudent();相当于写成 Couse::getNumberOfStudent(); 如果想 调用上面的 全局命名空间的普通函数,则需要 显示的写成:
for (int i = 0 ;i < ::getNumberOfStudents();i++) //屏蔽了 全局的 函数 getNumberOfStudents(),效果和 Course::getNumberOfStudents() 相同。{cout << student[i] <<",";}
::getNumberOfStudent()显示的说明了调用 全局命名空间的 getNumberOfStudent();
阅读全文
0 0
- C++随笔——成员函数的相互调用问题:
- c++和c语言中的函数相互调用的问题
- C与C++函数的相互调用
- C于汇编函数的相互调用
- C与C++的相互调用问题
- C与C++的相互调用问题
- dojo——AMD中class内部成员函数相互调用实现
- 类模板成员函数的调用问题
- 关于成员指针函数的调用问题
- 成员函数调用delete this的问题
- 函数的相互调用
- C/C++相互调用函数
- C/C++函数相互调用
- LUA函数和C函数的相互调用
- LUA函数和C函数的相互调用
- extern C实现C与C++函数的相互调用
- extern C(C++与C实现相互函数的调用)
- C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。
- HDOJ2002_计算球体积
- Codeforces 776B
- Android LruCache & DiskLruCache cooperate working in ListView
- Redis学习11——Redis事务
- 使用python虚拟环境创建flask项目
- C++随笔——成员函数的相互调用问题:
- kubelet 源码分析: 事件处理
- 移动测试基础 jacoco 统计 Android 手工测试覆盖率并自动上报
- BZOJ 1492 [NOI2007]货币兑换Cash(斜率优化dp+splay维护凸壳)
- 微信小程序---获取循环输入框(input)中的内容
- ubuntu16.04修改Python默认版本
- 变量名的力量
- matlab 函数
- redis客户端在本地连接CentOS 7虚拟机的服务端时,为什么会报can't connect to redis-server 的错误??以及做主从复制的时候总是失败