C++中关于类继承的类型转换问题

我的问题是:子类继承基类后,若基类中没有虚函数,都有breathe成员函数的定义这时我定义一个指向基类的指针,同时定义一个子类对象,将这个指针指向子类对象,如:animal是基类,fish是子类

animal* A;fish B;A=&B;A->breathe();

按书上说,是发生了强制类型转换,调用了animal中的breathe(),这个我可以理解;
然后若基类中有虚函数breathe,子类中也有同名定义breathe,再执行上面的代码

animal* A;fish B;A=&B;A->breathe();
可以肯定调用的是fish中的breathe()。是不是同样发生了类型强制转换?那么书上说,实际执行breathe时,会自动根据对象的实际类型调用相应的函数。请问这个实际类型是编译器自动保存的吗?是不是不需要我们做别的操作?
请大佬解惑!谢谢!
附完整代码

#include<stdlib.h>
#include<typeinfo.h>
using namespace std;
class animal
{
public:
    void eat()
    {
        cout<<"animal eat"<<endl;
    }
    void sleep()
    {
        cout<<"animal sleep"<<endl;
    }
    virtual void breath()
    {
        cout<<"animal breath"<<endl;
    }
};
class fish:public animal
{
public:
    void breath()
    {
        cout<<"fish breath"<<endl;
    }
};

void fn(animal *species)
{
    species->breath();
    cout<<typeid(species).name()<<endl;
}
void main()
{
    fish fh;
    animal* fit;
    fit=&fh;
    fn(fit);
    cout<<typeid(fit).name()<<endl;
    //cout<<typeid(fh).name()<<endl;
    system("pause");
}


1个回答

你说的强制转换发生在这步:A=&B。所以两个都发生了强制转化
了解一个名词:虚表。
c++的的实例都会维护一个虚表,表中的数据就是虚函数的指针,这个表在实例的最前面,你可以通过指针直接访问到这张表。
有这张表就简单了,如果子类的函数覆盖掉了父类的函数,则子类实例化后的对象中,虚表中的地址就会被子类override的函数的指针给代替
这样,子类对象在访问这个虚函数时,就会根据这个新的函数地址访问到这个函数了。
在让你理解一个概念,c++类实例化出的对象中没有函数,只有指向函数的指针。也就是说,一个类实例化出10个对象,然后这10个对象将要调用一个run函数,实际上他们调用的是同一个run函数,他们全部都有指向run函数的指针

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++中关于类继承的类型转换问题
我的问题是:子类继承基类后,若基类中没有虚函数,都有breathe成员函数的定义这时我定义一个指向基类的指针,同时定义一个子类对象,将这个指针指向子类对象,如:animal是基类,fish是子类rn```rnanimal* A;fish B;A=&B;A->breathe();rn```rn按书上说,是发生了强制类型转换,调用了animal中的breathe(),这个我可以理解;rn然后若基类中有虚函数breathe,子类中也有同名定义breathe,再执行上面的代码rnrn```animal* A;fish B;A=&B;A->breathe();```rn可以肯定调用的是fish中的breathe()。是不是同样发生了类型强制转换?那么书上说,实际执行breathe时,会自动根据对象的实际类型调用相应的函数。请问这个实际类型是编译器自动保存的吗?是不是不需要我们做别的操作?rn请大佬解惑!谢谢!rn附完整代码rnrn```#includern#includern#includernusing namespace std;rnclass animalrnrnpublic:rn void eat()rn rn cout<<"animal eat"<breath();rn cout<
c中类型转换问题
typedef enum conf_type rn CONF_ITEM_PAIR,rn CONF_ITEM_SECTIONrn CONF_ITEM_TYPE;rnrnstruct conf_item rn struct conf_item *next;rn struct conf_part *parent;rn int lineno;rn CONF_ITEM_TYPE type;rn;rnstruct conf_pair rn CONF_ITEM item;rn char *attr;rn char *value;rn LRAD_TOKEN operator;rn;rnstruct conf_part rn CONF_ITEM item;rn char *name1;rn char *name2;rn struct conf_item *children;rn;rnrn有这几个结构,他们之间进行类型转换,请问是怎么执行的?直接转换不会产生不安全或rn错误么?rnrnCONF_PAIR *cf_itemtopair(CONF_ITEM *ci)rnrn if (ci == NULL)rn return NULL;rn rad_assert(ci->type == CONF_ITEM_PAIR);rn return (CONF_PAIR *)ci;rnrnCONF_SECTION *cf_itemtosection(CONF_ITEM *ci)rnrn if (ci == NULL)rn return NULL;rn rad_assert(ci->type == CONF_ITEM_SECTION);rn return (CONF_SECTION *)ci;rnrnCONF_ITEM *cf_pairtoitem(CONF_PAIR *cp)rnrn if (cp == NULL)rn return NULL;rn return (CONF_ITEM *)cp;rnrnCONF_ITEM *cf_sectiontoitem(CONF_SECTION *cs)rnrn if (cs == NULL)rn return NULL;rn return (CONF_ITEM *)cs;rn
关于DLL中的类继承问题
现写了一个基于CObject的类A,类A写在DLL中,在编译的时候就出现了rnnon dll-interface class 'CObject' used as base for dll-interface class 'A';rn我查过是由于COject无法导出而出现的问题。rn我现在想问有什么办法解决此类问题,知道的大虾指导一下。
关于在VS2008中类继承的问题
我做了一个简单的d3d程序。有如下代码:rn第一个文件:rn#pragma oncernrn#include "AnimMesh.h"rnrnrnclass Xfilernrnprivate:rn```rnpublic:rn```rn //构造函数与析构函数rnrn Xfile(void);rn ~Xfile(void);rn;rnrnrn第二个文件:rn#pragma oncern#include "Xfile.h"rnrnclass CSprayVehicle:public Xfilernrnprivate:rn ```rnpublic:rn ```rnrn//析构函数rn CSprayVehicle(void);rn ~CSprayVehicle(void);rn rn;rnrn第三个文件:rnSprayVehicle.cpprn```rn//-----------------------------------------------------------------------------rn// Desc: 析构函数rn//-----------------------------------------------------------------------------rnCSprayVehicle::~CSprayVehicle(void)rnrnrn```rnrn然后在主文件中添加如下代码:rn#include "SprayVehicle.h"rn···rnCSprayVehicle* g_pSprayVehicle = NULL; //喷洒车rnrn···///实现部分rn随后编译时出现如下错误:rnSprayVehicle.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Xfile::~Xfile(void)" (??1Xfile@@QAE@XZ),该符号在函数 __unwindfunclet$??0CSprayVehicle@@QAE@XZ$0 中被引用rnSprayVehicle.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Xfile::Xfile(void)" (??0Xfile@@QAE@XZ),该符号在函数 "public: __thiscall CSprayVehicle::CSprayVehicle(void)" (??0CSprayVehicle@@QAE@XZ) 中被引用rnDebug\ComplexSample.exe : fatal error LNK1120: 2 个无法解析的外部命令rnrnrn这个问题已经整了一下午,还是没弄出来。不知是继承类时出错还是别的哪个地方有问题??
关于c中类型转换的问题,求解
rn#include rnmain()rnrn short int i = -1;rn unsigned long int g = i;rn printf("%d %d\n",i,g);rnrnrn为甚麽输出结果为 -1 -1rn进行赋值时不是右边的转换为左边的类型吗?rn难道机器进行符号位扩充时,只是依据补码的扩充法则,补上了1,而c定义变量中的unsigned 没有起作用?
关于C中的类型转换的问题以及原则
main()rnrnchar a='a';rnint b=8;rnfloat c=9.0;rnprintf("%d\n",sizeof(c-a-b));rnrnrnrn这个问题怎么扩展成双精度的了 我认为是单精度已经够了的 难道说不够减所以要扩展成双精度 rn但是如果是字符型减短整型也应该有可能不够减 “正”-“负”也有可能超出短整形 而把短整型扩展成长整型
关于类继承中构造函数的问题
class CRectrnrnprotected:rn int m_iLeft; rn int m_iRight; rn int m_iTop; rn int m_iBottom;rnpublic: rn CRect::CRect(int Left=0, int Top=0, int Width=getmaxx(),rn int Height=getmaxy())rn rn m_iLeft=Left;rn m_iTop=Top;rn m_iRight=Left+Width;rn m_iBottom=Top+Height;rn rn; rnclass CButton : public CRectrn rnprotected:rn CWindow * Parent;rnpublic:rn CButton(int x,int y,int w,int hCWindow * WIN=NULL)rn : CRect(x,y,w,h)rn rn if(!Parent) rn rn 本人想从此处来决定调用基类构造函数的参数,rn 当Parent为空时如下构造rn CRect(x,y,x + width,y + 24);rn rn elsern rn 当Parent为真时如下构造 rn RECT(Parent->m_iLeft + x,rn Parentt->m_iTop + y,rn parent->m_iLeft + x + width,rn parent->m_iTop + y + 24);rn rn;rn问应如何实现,请给源码rn bgrcolor = parent->bgrcolor;rn txtcolor = parent->txtcolor;rn rnrn
■c#中关于类继承的问题■
在C#中,子类的方法覆盖了父类的方法后,如何再调用父类的方法?偶知道在java中用super(),在C#中用什么?rnrn class Animal//定义动物类rn rn void breathe()//定义动物呼吸方法rn rn Console.WriteLine("animal breathe");rn rn rnrn class Fish : Animal//定义鱼-继承动物类rn rn public void breathe()//定义鱼的呼吸方法rn rn Console.WriteLine("fish bubble");rn rn rnrn class Programrn rn static void Main(string[] args)rn rn Fish fn = new Fish();rn fn.breathe();rn rn rn鱼子类的呼吸方法已经覆盖了动物父类的呼吸方法,请问此时如何才能再调回动物的呼吸方法。rn在输入时同时有"animal breathe"和"fish bubble"两个结果。rn
关于类继承中的事件问题
本人对JAVA的了解不是很深,只是由于对手机上的程序开发(J2ME)有一点兴趣(也是实际需要)才学了一点皮毛。本人以前对DELPHI的了解多一点,可是概念上有所不清楚。现在有一个问题请教一下:rn在J2ME的文档中,事件(event)和方法(method)似乎是一样的。比如说,父类定义一个虚拟的(abstract)方法,并在其它方法中进行调用,子类必须予以实现。这样就很像是一个事件的概念。那么如果一个父类定义了这样的一个方法,然后我的一级子类需要实现这个方法,并要求二级子类也必须实现这个方法,然后一级子类根据需要决定是否要执行二级子类的方法。这个如果实现?使用super可以显示执行父类的方法,那么如果执行子类的方法?rn不知道我的问题说清楚了没有,在线等。
c语言关于类型转换的问题
[code=c]rnenum NEW_SERV_ID rnrn NSID_SERV254 = 254,rn NSID_SERV255 , rn NSID_BUTT rn;rnrnunsigned char GetNsid(char nsid)rnrn return (nsid);rnrnrnfloat func(int t)rnrn return t;rnrnint main()rn rn printf("%d\n",GetNsid(NSID_SERV255)); //255,这里不应该执行默认的类型转换么?而char类型的范围不是-127-128么,为什么这里还能打印出255?rn float f_t= 2.23;rn printf("%f\n",func(f_t)); //2.0000,这里和预期一样,执行了默认的类型转换。rnrn[/code]rn如注释中所示,求解答,谢谢。
关于C位操作(类型转换)
hi allrnrnthere are a char* varrnchar* mac_test = "0x34";rnI need convert this char* var to char then save the value "0x34" to char mac_change=0x34;rnrnhow can i to do?rnrnrnthanks
关于类继承问题
class A rn rnpublic: rn virtual void aa()=0; rn; rnclass a: public A rn rnpublic: rn void aa(); rn; rnclass B:public A rn rnpublic: rn virtual void bb()=0; rn; rnclass b: public a,public B rn rnpublic: rnrn void bb(); rn; rnint _tmain(int argc, _TCHAR* argv[]) rn rn return 0; rn b bb; rn bb.aa(); rn rnerror C2259: “b” : 不能实例化抽象类 rn请问这种问题怎样解决
一个关于类继承的问题
我经常看到说从CToolBar继承一个类,可是我在NEW CLASS中只能找到CToolBarCtrl类,却没有CToolBar,能不能帮我解释一下两者的关系.rn我看到这样一篇文章“如何创建一个字回绕的CEditView”rn请问什么是“字回绕”?rn
关于java类继承的问题
如果A extends B, B extends C,A想调用C中的方法的话通过super.*还是super.super.*? 谢谢!
关于泛型类继承的问题
class brnclass b1:brnclass b2:brnclass crnclass c1:crnclass c2:crn我想实现定义一个对象c _aaa;能将c1,c2负值给_aaa,请帮忙看一看了,先谢了rn
关于类继承初始化问题
对于由引用类变量(class field)所引发的初始化,只会初始化真正定义该field的class。rnrn这句话怎么去理解?有什么样的例子可以证明这一句话的正确性!请高手帮忙写个简单例子!rn请高手指教,先谢为主,谢谢大家!
关于自定类继承的问题
我想做个类,它继承其它组件的功能,现在以继承一个按钮组件为例:rnrn定义一个类rnclass TNew_but : public TButtonrnrnprivate:rnrnpublic:rn int k;rn;rnrn声明:rnTNew_but *wb = new TNew_but;rnwb->k = 100;rndelete wb; rnrn为什么这样不能成功运行呢??rn[C++ Error] Unit1.cpp(31): E2125 Compiler could not generate default constructor for class 'TNew_but'rn另外还有个问题,TForm *new_frm = new TForm(this);在括号()中,有时用NULL,有时用this,有是用Application,还有时就不要()了,请问这有什么区别??
关于类继承的问题。
在VB.NET当中,我在类中写了一个public函数,rn然后Inherts这个类,在子类中也定义了这样一个同名函数,rn结果是先运行父类的函数,然后在调用子类的函数(.NET是这样的么?)rnrn如果我要先调用子类的函数,再调用父类的呢?应该怎么做?rnthx.
关于类继承构造的问题
在定义一个子类对象时,总是先调用其基类的构造函数,然后调用子类的构造。那为什么在子类构造中却又可以向其基类构造传递参数?我的意思是,在调用基类构造时子类构造如果未被调用,那么基类构造函数的参数从哪来?
????关于C与pascal的类型转换????
请问各位使用delphi调用c或c++写的动态库,在数据类型转换时会有问题吗,我是指系统自动转换和开发工具转换方面,总怕不是代码的事,而是系统在转换时出问题,请指教
问个关于类继承的问题
[code=C#][/code]using System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnrnnamespace ConsoleApplication1rnrn public class BaseClassrn rn public virtual void Write()rn rn rn rn public class NewClass:BaseClass rn rn public override void Write()rn rn Console.WriteLine("Welcome");rn rn rn class Programrn rn static void Main(string[] args)rn rn NewClass myClass = new NewClass();rn BaseClass yourClass =myClass ;rn yourClass.Write();rn Console.ReadKey();rn rn rnrnrn这上边是代码--------------------------------------------------------------------------------------rn结果是会输出派生类的Write方法rn请问这为什么会这样呢 ?【BaseClass yourClass =myClass ;】这句代码实际上是不是给myClass新添了个引用 或应该叫指针? 希望指点下 谢谢 rn
关于类继承的问题
一个图形的基类,如CFigure,一个圆的类CCircle,一个椭圆的类CEllipse,继承的时候是应该CEllipse继承CFigure,CCircle继承CEllipse,还是CCircle继承CFigure,CEllipse继承CCircle呢?还是CCircle、CEllipse都继承CFigure呢?rnrn感觉上好像应该是CFigure--CEllipse--CCircle,但描述椭圆要用长半轴和短半轴,而圆只需要用半径就可以了,这样又好像应该是CFigure--CCircle--CEllipsernrn那应该是怎样的呢?thx
关于类继承的一个问题
在vs2005下编译,在一个地方出了8个错误,请问是语法不对吗?错误已标出rn#include "stdafx.h"rn#include "iostream"rn#include "string"rnusing namespace std;rnclass Srn public:rn virtual void write()cout<<"S::write"<(p);rn s1->write();rn rnint main(int argc, _TCHAR* argv[])rn Radio rr;rn mytest(&rr); rn return 0;rnrn error C2236: 意外的“class”“TS”。是否忘记了“;”?rn error C2143: 语法错误 : 缺少“;”(在“:”的前面)rn error C2059: 语法错误 : “:”rn error C2059: 语法错误 : “public”rn error C2143: 语法错误 : 缺少“;”(在“”的前面)rn error C2447: “”: 缺少函数标题(是否是老式的形式表?)rn error C2504: “TS”: 未定义基类
关于类继承的问题.
请教一下rn有这样一个类class CSECanvas : public CTimer,public MDirectScreenAccessrnrn....rnrn我希望 写一个类rnclass CMyCanvas : public CSECanvasrnrnrn可以这样写么?rnrn我新建了一个这样一个类.没有内容.只有基本的二段构造和析构rnrn编译器报错为:cannot construct CMyCanvas's base class 'CSECanvas'rnrn我如果想实现上诉的结构,大体应该如何做啊
一道关于类继承的问题
a是基类,b是a的派生类rnrnB b;rn1.A a = b;rn2.A &ra = b;rn3.A *pa = &b;rnrn2和3的含义我一直没搞清楚,请高手指点一下
关于类继承的this指针问题
直接上例子把rn[code=c]rn#includernusing namespace std;rnclass arnrn public:rn a()rn rn temp=this;rn this->fs();rn rn virtual void fs()rn rn printf("123\n");rn rn a* temp;rn;rnclass b:public arnrn void fs()rn rn printf("1234\n");rn rn;rnint main()rnrn b ksd;rn ksd.temp->fs();rnrnrn[/code]rn为什么直接调用 fs函数会与传递this指针再调用fs函数的值 有所不同呢
关于类继承的两个问题
1.请问在派生类对象中,怎样取得基类的名称。rn我要用到的场合是:有n个窗体,有些直接从System.Windows.Forms.Form继承,有些是从其它窗体继承,我要判断哪些窗体是从某个窗体继承过来的。rnrn2.请问在基类变量中(指向的是一个派生类对象,这个地方我说不太清楚,麻烦看下面),怎样调用一个派生类的方法。rn比如:rn 有窗体一个Form1,其中有一个方法:Public Sub Foo()...rn dim frm as System.Windows.Forms.Form=New Form1()rn 可否得知frm中是哪个派生类的对象?比如在此,frm中的就是Form1的对象。并通过变量frm来调用这个派生类的方法Foo?rnrn谢谢!!rn
关于PHP类继承的问题
我现在自己编写了一个两个继承关系的类,父类实例化后子类不知道怎么调用父类已经实例后存储的变量rn先把代码粘在下面:rn[code=php]rnClass Identificationrnrn //Identification函数将name与code联系起来rn public function Identification()rn rn //连接到InfoModelrn $DB_Info = M('Info');rn $condition->Name = $this->name;rn return $this->code = $DB_Info->where($condition)->getfield('Code');rn rn public $name;rn protected $code;rnrnrnClass PT_Info extends Identificationrnrn public function get_BloodTest()rn rn $DB_BloodTest = M('Bloodtest');rn $condition->Code = $this->code;rn echo "This is Code:".$this->code;rn $this->Info_BT_WBC = $DB_BloodTest->where($condition)->getfield('WBC');rn echo "This is WBC:".$this->Info_BT_WBC;rn $this->Info_BT_NEPer = $DB_BloodTest->where($condition)->getfield('NEPer');rn echo "This is NE%:".$this->Info_BT_NEPer;rn $this->Info_BT_LYPer = $DB_BloodTest->where($condition)->getfield('LY%');rn echo "This is LY%:".$this->Info_BT_LYPer;rn $this->Info_BT_MOPer = $DB_BloodTest->where($condition)->getfield('MO%');rn echo "This is MO%:".$this->Info_BT_MOPer;rn rn rn public $Info_BT_WBC;rn public $Info_BT_NEPer;rn public $Info_BT_LYPer;rn public $Info_BT_MOPer;rnrnpublic function tclass()rn rn $neal = new Identification();rn $neal->name = 'Neal';rn $code = $neal->Identification();rn $this->assign('name',$neal->name);rn $this->assign('code',$code);rn $neal_BT = new PT_Info();rn $neal_BT->get_BloodTest();rn $this->assign('Info_BT_WBC',$neal_BT->Info_BT_WBC);rn $this->assign('Info_BT_NEPer',$neal_BT->Info_BT_NEPer);rn $this->assign('Info_BT_LYPer',$neal_BT->Info_BT_LYPer);rn $this->assign('Info_BT_MOPer',$neal_BT->Info_BT_MOPer);rn $this->display();rn [/code]rn如上面代码:我把Identification类实例化为neal后存储了一个变量$code,之后实例化其子类PT_Info为neal_BT,此时需要调用已经存储在neal中的$code变量值(详见PT_Info类里的函数用法)rn我不想在PT_Info类里面再单独存一个$code变量,想借用继承关系,毕竟往后还有很多类似的结构,那样写的话整体会很乱rn话句话说我先在实例化的子类要调用一个实例化的父类里的变量,这两个类在定义是有继承关系,可是实例化后我不知道怎么告诉编译器这两个类(neal和neal_BT)之间存在继承关系rn注:我整个项目使用ThinkPHP框架写的,所以有的函数(比如‘M’方法)并非PHP默认的写法rn跪求大神帮忙解答!!!
关于Dialog类继承的问题
某一应用管理一批数据,数据可按其输入顺序号提取(例:取第二个输入数据),同时要求可按其大小顺序提取(例:取数据中第二大的数据)。有另一应用需要在原基础上为每个数据附加一个参数,此参数给出该数据与全体数据的均差(该数据与全体数据的算术平均值之差的绝对值),并且数据和均差均可按顺序号或大小顺序提取(均差顺序号与数据顺序号相同,均差大小与数据大小分别排序)。试用面向对象方法对如上应用程序设计一个类结构,给出每个类应包含的属性和方法。要求先实现第一部分功能,再实现第二部分功能,使用类的继承和重用技术,用C++实现。rnrn我是学生在做这个题目,已经弄出来两个基于dialog的类a,b,a的控件以及函数都已经弄好了,b类继承了a类,由于两个功能是相似的,仅仅是作用于不同数组而已,我不想在b类再重新复制一次代码(因为题目要求要继承呢),那怎么可以让b类继承a类的控件以及在其上的函数呢?
一个关于类继承的问题!!
假如A是B的子类,B是C的子类,那们如何在A调用C的方法和变量呢?
关于类继承接口的问题
大家好 现在看一本书 rnAsp.net 3.5 商用开发架构精解 之前也遇到一些小问题 自己给解决了 rn不过这个问题很纠结我rn注释掉的地方是报错的语句 ENTUserAccount 是 dbml里面的一个类 映射的 ENTUserAccount 表rnrnIENTBaseEntity 是 DAL 里 所有类都继承的接口 rn定义了 ID insertdate insertperson version 等 6个属性rnrn这二个类型之间不存在继承关系?怎么互转rn报错了 这个方法是 BLL里面定义的每个类都必须实现的方法rn用来定义基本属性rnrn rn请哪位讲解下 或给个建议提示下该怎么改?rnrn protected override void MapEntityToCustomProperties(IENTBaseEntity entity)rn rn rn //ENTUserAccount userAccount = (ENTUserAccount)entity;rn this.ID = userAccount.ENTUserAccountId;rn this.WindowsAccountName = userAccount.WindowsAccountName;rn this.FirstName = userAccount.FirstName;rn this.LastName = userAccount.LastName;rn this.Email = userAccount.Email;rn this.IsActive = userAccount.IsActive;rn
关于在类继承的问题
昨天帮朋友调程序,看程序中一个新类实现一个类,所以在新类中要把接口的方法都实现。奇怪的是在这些方法上加@Override注解出错了,如果把注解去掉就可以了。也不知道是什么原因
关于类继承的简单问题。。。
类A中有个方法X,类B中也有个方法X,类B继承于类A,有没有一种方式,当调用类B中的方法X时,自动先调用类A中的X方法,然后再调用类B中的X方法???(类似于虚方法这样的内部解决方案)
简单的关于类继承的问题
我用B类继承了A类(PUBLIC)rn假设A类中有aaa的变量。rn怎么用B类的对象BB调用aaa。rnrn在线候教——C++的初学者
关于类继承的简单问题
class Arnrnpublic:rn [color=#FF0000]A( int x =0 )[/color]rn //将之修改成A(int x),B(const A &p)报错error C2512: 'A' : no appropriate default constructor availablern rn printf("Constructor A CaLL!\n");rn a =x;rn rn A(const A &p)rn rn a=10;rn printf("Fuzhi A is call!\n");rn rn rnpublic:rn int a; rn;rnrnclass B:public Arnrnpublic:rn B(const A &p)rn rn b.a =p.a;rn a=1;rn printf("Fuzhi B is call!\n");rn rnpublic:rn int a; rn A b;rn;rnrnvoid main()rnrn A*p =new B(7);rn printf("%d\n",p->a);rn printf("%d\n",((B*)p)->b.a);rn printf("%d",((B*)p)->a);rn
关于类继承的基础问题
看别人写的代码rn/**rn * Every service that wants to plug into IPBService Frameworkrn * need to implement this interface.rn */rnpublic interface IPBService extends InitializingBean, DisposableBeanrnrnrnrnabstract public interface org.springframework.beans.factory.InitializingBean extends java.lang.Objectrnrnrnabstract public interface org.springframework.beans.factory.DisposableBean extends java.lang.Objectrnrnrn没有看明白1、可以同时继承两个抽象类么?2、可以又是抽象类又是接口么?
关于类继承的问题?
public class Brn public int f(int i)rn return i;rn rnrnrnpublic class c extends Brn public int f(int i)rn return super.f(i);rn rn public double f(double d)rn return d;rn rnrn public static void main(String[] args)rn B x = new C();rn rnrn请问x能不能调用c中的f(double d)方法?我测试的结果是不行,为什么?rn
C中常见的类型转换
title: C中常见的类型转换 date: 2016-06-13 11:35:17 categories: C++ tags: - C - C++ - 类型转换常见的类型转换小结:signed char转换成int类型时,转换后的int类型前3个字节填充对应char类型最高位的比特数。而unsigned char类型转换成int类型时,无论char类型的最高位是
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池