1. 传参问题:
如果栈或者队列作为引用类型的参数,则应该如下写法:
void init(queue<string> *ready,queue<string> *block)
{
int i;
string Rpro="进程r",Bpro="进程b",comb,tem;
char c[5];
for (i=0;i<5;i++)
{
sprintf(c, "%d", i+1);
tem=c;
comb=Rpro+tem;
ready->push(comb);
comb=Bpro+tem;
block->push(comb);
}
}
int main()
{
int opt;
string value;
string nowpro;//记录当前的进程
queue<string> ready, block;//创建队列
cout<<" ************************************************"<<endl;
cout<<" * 进程状态转换模拟 *"<<endl;
cout<<" ************************************************"<<endl<<endl;
discribe();//操作说明
init(&ready,&block);//初始化队列信息.......}
2.虚函数问题
基本讲解参考陈浩博客:http://blog.youkuaiyun.com/haoel/article/details/1948051
问题:是否子类的虚函数和父类的虚函数 如果参数不一样 还会被覆盖吗?
重载函数:像其他函数一样,成员函数(无论虚函数还是非虚函数)也可以重载,派生类可以重定义所继承的0个或者多个版本。
如果派生类重定义了重载成员,则通过派生类型只能访问派生类中重定义成员。
class Base { public: virtual void func1(float a) { cout<<"base::func1 "<<a<<endl; } virtual void func2() { cout<<"base::func2 "<<endl; } virtual void func3() { cout<<"base::func3"<<endl; } }; class Dev : public Base { public: void func1(int a) { cout<<"Dev::func1 "<<a<<endl; } void func2() { cout<<"Dev::func2 "<<endl; } virtual void func4() { cout<<"Dev::func4 "<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { Base *p; Dev de; Dev h; p=&de; p->func1(12); p->func1(12.358); h.func1(12); h.func1(12.32); getchar(); return 0; }
![]()