【c++程序】继承的几个问题

#include<iostream>
using namespace std;
class Animal
{
private:
	char name[20];
protected:
	int age;
public:
	void setName(char *name)
	{
		strcpy_s(this->name,name);
	}
	void setAge(int age)
	{
		this->age=age;
	}
	char *getName()
	{
		return name;
	}
	int getAge()
	{
		return age;
	}
	void show(bool bNewLine)
	{
		cout<<name<<':'<<age;
		if(bNewLine)
			cout<<endl;
	}
};
class Bird:public Animal
{
	double weight;
public:
	void setWeight(double weight)
	{
		this->weight=weight;
	}
	double getWeight()
	{
		return weight;
	}
	void fly()
	{
		cout<<"我终于翱翔用心凝望"<<endl;
	}
	void visit_parent()
	{
		//cout<<"name="<<name<<endl;//ERROR
		cout<<getName()<<endl;
		cout<<age<<endl;
	}
	void show()
	{
		Animal::show(false);
		cout<<getName()<<'\t'<<getAge()<<'\t'<<weight<<'\t'<<endl;
	}
	void show(bool bNewLine)
	{
		Animal::show(bNewLine);
	}
};
int main()
{
	/*Animal a1,a2;
	a1.setName("团团");
	a1.setAge(300);
	a2.setName("圆圆");
	a2.setAge(200);
	cout<<a1.getName()<<'\t'<<a1.getAge()<<endl;
	cout<<a2.getName()<<'\t'<<a2.getAge()<<endl;*/
	//Animal a1;
	//a1.fly();
	//Animal a1;
	Bird b1;
	b1.setName("鸽子");
	b1.setAge(33);
	b1.setWeight(100);
	//cout<<b1.getName()<<'\t'<<b1.getAge()<<'\t'<<b1.getWeight()<<'\t'<<endl;
	//b1.fly();
	b1.show();//子类的show,会覆盖父类的同名函数
	b1.show(true);//b1.Animal::show(true);
	//cout<<b1.age<<endl;   ERROR
	//cout<<a1.age<<endl;
}

时间: 2024-11-26 03:32:23

【c++程序】继承的几个问题的相关文章

调用程序继承fd和监听端口的问题

linux子进程或者popen.exec启动的程序都会继承fd 比如主进程调用了另一个程序,结果主程序结束后,这个被调用程序竟然继承了所有的fd包括监听端口,有时候阻塞运行时间比较长,会导致监听端口收不到报文.后来实验建立子进程去启动程序,写个脚本去启动程序,情况是一样的.写个小程序再去启动脚本,也一样. 查了下文档,使用fcloseall来关闭fd,结果发现这个函数没用,别的系统没有试验,至少在centos6.3和redhat5.7都不行. 最后直接在子进程里面从3到1000的fd全部clos

第十一周 阅读程序-继承和派生1

#include <iostream> using namespace std; class Data { public: Data(int i):x(i) { cout<<"A"; } ~Data() { cout<<"B"; } private: int x; }; class Base { public: Base(int i):b1(i) { cout<<"C"; } ~Base() { c

第11周 阅读程序-继承和派生2

#include<iostream> using namespace std; class G { public: static int m; G( ) //构造函数 { m++; cout<<"G begins\n"; } ~G( ) { cout<<"G ends\n"; m--; } }; int G::m=0; class D:public G { public: D( ) //构造函数 { m++; cout<&l

IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)

IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的应用程序生命周期.IIS 7.0 还支持经典模式,其行为类似于在 IIS 6.0 中运行的 ASP.NET.有关更多信息,请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述.IIS 7.0 集成管道是一种统一的请求处理管道,它同时支持本机代码和托管代码模块.实现 IHttp

如何让虚拟目录里面的webconfig不继承网站的设置

在一个网站 中国红木网 下 建一个虚拟目录,结果虚拟目录系统会调用 中国红木网 上的web.config, 在网上找到以下解决方案 在(如根目录)所在的Web.config加上 如:<location path="." allowOverride="false" inheritInChildApplications="false"> </location> 方法如下: 程序代码 <location path=&quo

Asp.Net高级知识回顾_HttpModule及应用程序生命周期_1

为什么asp.net落后了,还讲这些?因为mvc 还是沿用老框架的,加了一个请求模块,在第七个事件中触发; 一.概念 HTTP模块(HttpModule)是通过实现IHttpModule接口和处理事件,在每次针对应用程序发出请求时调用的程序集.HTTP模块作为ASP.NET请求管线的一部分调用,能够在整个请求过程中访问生命周期事件.因此,HTTP模块使我们有机会检查传入和传出的请求,并根据该请求采取操作,甚至我们可以通过实现HTTP模块来参与ASP.NET的运行管理. 二.托管管道模式(IIS应

Java学习(六)

面向对象 结构化编程和面向对象编程 在Java中,围绕要解决问题的对象来设计,我们通过类来描述对的属性和行为.把其中的一切都当成对象来描述 类与对象是相辅相成的,类是对象,对象是类的实例. 对象的每个属性被表示为类中的一个成员变量,对象的每个行为成为类中的一个方法 类 类是拥有共同属性的对象的集合.创建一个新的对象要用到关键字New,New+类名表示实例化一个新的对象,例如: public class Name(){} 建立一个其他的类 public class Other(){ Name na

20145335郝昊《java程序设计》第4周学习总结

20145335郝昊 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 何谓继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序代码提升为父类.) 特点: 这里接触到了新的关键词,extends,在java语言中用estends来继承父类的行为. is-a原则,在java中子类只能继承一个父类.要开始理解多态,必须先知道操作的对象是“哪一种”. 多态,使用单一接口操作多种类型的对象. 在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,称为重

修复 Java 内存模型,第 1 部分——Brian Goetz

转自Java并发大师Brain Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp02244/ (中文地址) http://www.ibm.com/developerworks/java/library/j-jtp02244/index.html (英文地址) 什么是 Java 内存模型,最初它是怎样被破坏的? 简介: 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM

Java学习之多线程一

1.进程与线程的关系 一个程序运行后至少有一个进程,一个进程中可以包含多个线程2.多线程两种实现方式 A:实现线程程序继承Thread /** * 定义子类,继承Thread * 重写run() * @author vanguard * */ public class SubThread extends Thread { public void run() { for(int i = 0; i < 50; i++) { System.out.println("run..." +