1. 在C++中如何表达继承
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++于2014年8月18日公布。[1] 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
表达继承的方式有两种:
单重继承:
class 派生类名:继承方式 基类名
多重继承:
class 派生类名:继承方式 基类名,继承方式2 基类名2,.。。,继承方式n 基类名n
继承方式有public,protected,private,可以加限定词virtual表虚继承。
2. c++ 不能被继承的类怎么写
题目:用C++ 设计一个不能被继承的类。
分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。
在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。
首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。
本文来自CSDN博客,转载请标明出处:/archive/2008/04/02/2245038.aspx
3. C++类继承 构造函数 定义和实现 怎么写呀
//C.h
class C
{
public:
C();//构造函数定义
~C();//析构函数定义
};
//C.cpp
#indlude "C.h"
C::C(){。}//构造函数实现
C::~C(){。}//析构函数实现
//D.h
class D:classC//D继承C
{
};
以上是一个框架
以下是一个实例 为节省空间 定义和实现写到一起了
//TreeBaseNode.h
#pragma once
#include <iostream>
using namespace std;
class CTreeBaseNode
{
public:
CTreeBaseNode(int t)
{
m_Type = t;
m_L = 0;
m_R = 0;
m_P = 0;
}
virtual ~CTreeBaseNode()
{
m_L = 0;
m_R = 0;
m_P = 0;
}
virtual void Show() = 0;
int m_Type;
CTreeBaseNode* m_L;
CTreeBaseNode* m_R;
CTreeBaseNode* m_P;
};
//TreeNodeA.h
#pragma once
#include "treebasenode.h"
class CTreeNodeA :
public CTreeBaseNode
{
public:
CTreeNodeA(int v):CTreeBaseNode(0)
{
m_Value = v;
}
virtual ~CTreeNodeA(void){}
virtual void Show()
{
cout<<m_Value<<endl;
}
int m_Value;
};
4. java中的继承怎么写方法呀
在java中只能单继承,用extends关键字可以实现子类对父类的继承。
比如 :
class Fu{
}
class Zi extends Fu{
}
JAVA不允许多继承,但是可以通过接口来变相地实现多继承。
比如:
public interface A{
}
public interface B{
}
public C implements A,B{
}
5. C++中的类继承究竟有什么作用
继承能体现事物的普遍性和特殊性。
举个例子,地球上有人,人有普遍性特点:也就是能说话,能思考;把这些普遍性特点打包成一个类名称叫People。但是每个国家的语言不同(特殊性),所以对每个国家一个类,而且这个类继承People类。比如我们给中国人写一个类,这个新类名称叫ChinaPpeople,这样后这个类有人的普遍特性也有中国人的特性。但是中国人互相也有特殊性,比如每个人的思维都不一样所以再写一个类,继承ChinaPpeople类,这个新类名称叫ChinaPpeople1。这样以后用这个c++类我们可以很清楚地定义一个事物的特性,而且还能减少冗余代码。
6. c++中三种继承是怎么定义的
public公有继承protected保护继承private私有继承我们知道类的private和protected成员,在类外是不可以使用的.只有public成员可以在类外直接使用.公有继承时,基类的private成员派生类也不可用,基类的public和protected成员在派生类中可直接使用.继承过来(变成派生类相应的public和protected成员)只有public成员在派生类外可以直接使用.保护继承时,基类的private成员仍为有私有.基类的public和protected成员变成派生类的protected成员,这时在派生类外也不能直接使用原基类的public成员私有继承时,基类的private成员仍为有私有.基类的public和protected成员将变成派生类的private成员.举个例子.class A{public: int m_nTelNum;protected: int m_nAge;private: int m_nMoney;};class B:public A{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum; } void SetAge(int nAge) { m_nAge=nAge; } void SetMoney(int nMoney) { m_nMoney=nMoney;//这里就出现错误,因为基类的private成员不能用. }};B objB;//创建B类的对象objBobjB.m_nTelNum=123456;//可以objB.m_nAge=30;//错误.public继承中基类的protected在派生类中是protectedobjB.m_nMoney=100;//更错误,在派生类中都不可以直接使用.在类外就更不能了.class C:protected A{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum; } void SetAge(int nAge) { m_nAge=nAge; } void SetMoney(int nMoney) { m_nMoney=nMoney;//这里就出现错误,因为这是基类的private成员不能用. }};C objC;//创建C类的对象objCobjC.m_nTelNum=123456;//注意这里和public的区别,这里错误,m_nTelNum变成了C类的protected成员objC.m_nAge=30;//错误.protected继承中基类的protected在派生类中是protected,这与public同相objC.m_nMoney=100;//更错误,在派生类中都不可以直接使用.在类外就更不能了.class D:private A{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum; } void SetAge(int nAge) { m_nAge=nAge; } void SetMoney(int nMoney) { m_nMoney=nMoney;//这里就出现错误,因为这是基类的private成员不能用. }};D objD;//创建D类的对象objDobjD.m_nTelNum=123456;//错误,m_nTelNum变成了D类的private成员objD.m_nAge=30;//错误.private继承中基类的protected在派生类中是privateobjD.m_nMoney=100;//更错误,在派生类中都不可以直接使用.在类外就更不能了.从例子来看,三种继承从派生类内部引用来看好像没有区别,只在类外引用时表现不同.现在还看不出public和protected继承的区别那再看一个例子.class E:public B{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum;//可以 因为这是B的公有成员 } void SetAge(int nAge) { m_nAge=nAge;//可以 因为这是B的保护成员,现成变成E的protected成员 } void SetMoney(int nMoney) { m_nMoney=nMoney;//这个肯定不可以! }};E objE;//objE.m_nTelNum=123456;//可以//其它的两个就不能用了.class F:public C{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum;//可以 因为这是C的保护成员,这里与public继承已经有区别但还没有表现出来 } void SetAge(int nAge) { m_nAge=nAge;//可以 因为这是C的保护成员,现成变成E的protected成员 } void SetMoney(int nMoney) { m_nMoney=nMoney;//这个肯定不可以! }};F objF;objF.m_nTel=123456;//错误,因为这是F的保护成员.注意与E类区别class G:public D{ void SetTelNum(int nTelNum) { m_nTelNum=nTelNum;//不可以 因为这是D的private成员,注意这里区别 } void SetAge(int nAge) { m_nAge=nAge;//不可以 因为这是D的private成员,注意区别 } void SetMoney(int nMoney) { m_nMoney=nMoney;//这个肯定不可以! }};//那G在类外就没有了可以引用的继承过来成员了!//这些继承方式是很难理解的.最好的办法就是多写代码去试.。
7. C#继承遵循的规则是什么
C#中类继承的规则
1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。
2、派生类(子类)应当是对基类(父类)的扩展。派生类可以添加新成员,但不能除去已经继承的成员的定义。
3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类成员的访问方式只能决定派生类能否访问它们。
4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。(这点需要注意的是,如果是属性或者方法同名,但是签名不同,那就不是覆写,而是重载了)。
5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。
6、派生类只能从一个类中继承,可以通过接口实现多重继承。