构造函数可以继承吗?

作者&投稿:自翟 (若有异议请与网页底部的电邮联系)
构造函数可以继承吗?~

因为你的A的构造函数是显式的:A(int
x)
没有默认构造函数
A(void)
而你定义B
b时需要调用不带参的默认构造函数,
B自己没有,想从A继承,但A也没有,所以编译器报错。

不能,因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。
继承(extends)的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为反正每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了。

估计是你对“构造函数”的意义本身不理解,“调用”一个类有“继承”和“组合(说白了new 一个类)”两种方式,当你“调用”一个类的时候就会“自动运行”它的“构造函数”。

不能,因为子类继承父类的时候,先运行父类构造函数;
具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。
继承的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了。

基类的构造函数是不能被继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来。因此,对继承过来的基类成员初始化工作也要由派生类的构造函数承担。

构造函数是可以继承的
但是构造函数不能被显示的调用的
,由于你的有参数要传递所以要这样调用才行
#include<iostream.h>
class A
{
public:
A(int &x)
{
s=x;
}
int getS()
{
return s;
}
private:
int s;
};

class B:public A
{
public:
B::B(int x):A(x)
{}
void print()
{
cout<<getS();
}
};
void main()
{
B b(2);

b.print();
}
你可以用一个PRINTF语句去测试他们的执行的

因为你的A的构造函数是显式的:A(int x)
没有默认构造函数 A(void)
而你定义B b时需要调用不带参的默认构造函数,
B自己没有,想从A继承,但A也没有,所以编译器报错。


前端基石:面向对象的细节知识(较长)
把Array当做「构造函数」,在其「原型对象」上设置的公有属性和方法,是供实例调用的,例如:array.xxx()或者Array.prototype.xxx()。Function Function.prototype是一个匿名函数,而其余构造函数的原型对象都是普通函数,虽然说是个函数,但是和其他原型对象操作相同。并且所有函数「普通函数、自定义函数、内置构造函数、箭头...

java中的super()是什么
"super"。它和"this"类似,但是也有不同的地方。1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。2。可以在一个类的非static成员内部使用。比如super.method()。但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是...

面向对象程序设计有哪些基本特征?
把一部分或全部属性和部分功能(函数)对外界屏蔽,就是从外界(类的大括号之外)看不到,不可知,这就是封装的意义。二、继承 面向对象的继承是为了软件重用,简单理解就是代码复用,把重复使用的代码精简掉的一种手段。如何精简,当一个类中已经有了相应的属性和操作的代码,而另一个类当中也需要写...

面向对象方法的主要特征有哪些?
2、继承性 继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。3、多态性 对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将...

我想学编程
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。C++总是辩论的...

三角函数最开始是哪个国家提出的?
他在计算弦长时使用了不同的单位,重新计算了0到90度中间隔三又四分之三度(3.75°)的三角函数值表。然而古印度的数学与当时的中国一样,停留在计算方面,缺乏系统的定义和演绎的证明。阿拉伯人也采用了古印度人的正弦定义,但他们的三角学是直接继承于古希腊。阿拉伯天文学家引入了正切和余切、正割...

病毒代码如此简单,它又不是函数,是什么呢?制造者在那里找的呢?各位大...
病毒当然也需要调用系统函数的,其实病毒也是一个正常的程序,不值得大惊小怪的

java语言与C++相比,有哪些优点?
因此,去掉函数并不表示不再有子程序等模组化程 序的概念,相反地,是利用对象中的方法来取代函数,再一次强化对向导的发展策略。 4.不再有多重继承(Multiplelnheritance) 在C++中,多重继承是一项很强的功能,但也是一般人难以掌控的部分。去掉多重继承虽然降低了Java语言的功能,但是也大幅简化撰写程序时的困难度。

python函数可以有多少个参数(2023年最新解答)
导读:很多朋友问到关于python函数可以有多少个参数的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!Python函数的参数类型 Python函数的参数类型主要包括必选参数、可选参数、可变参数、位置参数和关键字参数,本文介绍一下他们的定义以及可变数据类型参数传递需要注意的地方...

...抽象类和接口有什么关系?c++里面的虚函数是java里面的接口_百度知 ...
所以,虚函数是在基类中定义,在其子类中重写实现,也可重写基类的函数。在使用虚函数的的时候,需要定义基类的指针来使用虚函数,否则就失去了虚函数的意义。其实两者都是为了实现多态性而存在,都需要通过继承来实现,只是Java中称为引用,与C++中的继承也是大同小异。

衡东县17062583302: 构造函数和析构函数能不能被继承 -
扶罡盐酸: 1,构造函数和析构函数不能被继承.构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么.所以,在整个层次中的所有的构造函数和析构函数都必须被调用而不能被继承. 2,子类的构造函数会显示的调用父类的构造函数或隐式的调用父类的默认的构造函数进行父类部分的初始化. 3,析构函数也一样.它们都是每个类都有的东西,如果能被继承,那就没有办法初始化了.

衡东县17062583302: c++构造函数可以被继承吗?网上说不可以但书上说可以 -
扶罡盐酸: 1、派生类是不直接继承基类的构造函数的.2、派生类可以通过域名解析符“::”访问基类中的公有构造函数.3、可以直接在派生类的构造函数中,用基类的构造函数去初始化派生类的某些成员.P.s.第三点应该就是你所说的,在书本中看到可以被继承的原因.

衡东县17062583302: c++中的构造函数能被继承吗?
扶罡盐酸: 构造函数是不能被继承的,但是可以被调用,如果父类重新定义了构造函数,也就是没有了默认的构造函数,子类创建自己的构造函数的时候必须显式的调用父类的构造函数. 即子类构造函数:父类构造函数{}

衡东县17062583302: JAVA语言构造函数可以继承吗 -
扶罡盐酸: 子类若遵循以下原则便可以继承父类的构造函数.⑴ 如果子类自己没有构造函数,则它可以无条件地继承父类不含参数的构造函数,作为自己的构造函数; ⑵如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承自父类不含参数的构造函数,然后再执行自己的构造函数;⑶ 对于父类含参数的构造函数,子类可以通过在自己的构造函数中使用关键字 super 来调用它,但是这个调用语句必须是子类构造函数的第一个可执行语句. ⒋ 你独自分析下列程序中构造函数的继承和重载.

衡东县17062583302: 构造函数和析构函数可以继承吗 -
扶罡盐酸: 析构函数当然是默认完全继承. 而构造函数可能有多种,所以在不显示继承调用父类构造函数的情况下,子类只能继承父类的默认构造函数,就是没有任何参数的构造函数.

衡东县17062583302: Java 构造函数能被继承吗 -
扶罡盐酸: 不能,因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”. 继承(extends)的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为反正每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了. 估计是你对“构造函数”的意义本身不理解,“调用”一个类有“继承”和“组合(说白了new 一个类)”两种方式,当你“调用”一个类的时候就会“自动运行”它的“构造函数”.

衡东县17062583302: 构造函数可以继承吗?
扶罡盐酸: 构造函数是可以继承的 但是构造函数不能被显示的调用的 ,由于你的有参数要传递所以要这样调用才行 #include<iostream.h> class A { public: A(int &x) { s=x; } int getS() { return s; } private: int s; }; class B:public A { public: B::B(int x):A(x) {} void print() { cout<<getS(); } }; void main() { B b(2); b.print(); } 你可以用一个PRINTF语句去测试他们的执行的

衡东县17062583302: C#构造函数是否能被继承 -
扶罡盐酸: 首先要说的是,执行和继承是两码事.继承是指子类是否具有和父类一样的类成员而不用去重新再把这些成员定义或实现一遍,所以继承的目的就是重用.执行是指在类的内部或外部来使用这些成员.执行构造函数是指在使用某个类的时候,需要创建该类的对象并为这个对象的所有成员分配内存的过程,如果该类继承了某个父类的话,那首先就要为父类的成员分配内存,当然就会先执行父类的构造函数了.另外,当子类构造时,碰到有override被重写的成员时,则这个曾经在父类构造时被分配的内存地址会在子类构造时被新的地址覆盖掉.明白乎?

衡东县17062583302: C#语言中,构造函数能否被继承?
扶罡盐酸: 1、构造函数不继承,派生类会自动调用基类构造函数. 2、若类内没有定义构造函数,系统会自动隐式生成一个不带参数的构造函数,比如定义一个类: public class A { } 可以理解为它已经存在一个如下的构造函数 public class A { public A() { } } ...

衡东县17062583302: 构造函数是否可以被继承?是否可以被重写? -
扶罡盐酸: 可以重载、不能重写、因为构造方法不能被继承、

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网