C++学习笔记

本文详细解析了C++中使用队列作为函数参数的正确方式,并通过实例演示了如何初始化队列。此外,还深入探讨了虚函数的概念,包括虚函数的覆盖与重载的区别,以及不同情况下虚函数如何工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值