问题标签 [derived-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
736 浏览

java - 为什么派生类构造函数总是要访问基类构造函数?

我在我的一篇试卷中看到了这个问题:

为什么派生类构造函数总是要访问基类构造函数?

我想知道这个问题是否有效?

0 投票
5 回答
5177 浏览

c++ - 为什么派生类中重写方法的“虚拟”是可选的?

当一个方法在类中声明virtual时,它在派生类中的覆盖也会被自动考虑virtual,并且 C++ 语言virtual在这种情况下使这个关键字是可选的:

virtual我的问题是:选择可选的理由是什么?

我知道编译器并非绝对有必要被告知,但我认为如果编译器强制执行这样的约束,开发人员将受益。

例如,有时当我阅读其他人的代码时,我想知道一个方法是否是虚拟的,我必须追踪它的超类来确定这一点。并且一些编码标准(谷歌)使得将virtual关键字放在所有子类中是“必须的”。

0 投票
6 回答
316 浏览

c# - 在构造函数中使用继承 (publix X () : y)

我刚刚看到以下代码,但我不明白构造函数声明中基类的派生。这是什么,这可能与序数方法吗?

0 投票
3 回答
404 浏览

c++ - 从派生模板类调用函数

我的基类:

派生模板类:

我对这段代码有另一个问题(在另一篇文章中回答),但目前我正在努力解决这样一个事实,即如果我尝试运行它,我会得到

未定义符号:“Element::plus(Element const&)”,引用自:
vtable for Vectorin main.o
“Element::Element()”,引用自:
Vector::Vector()in main.o
Vector::Vector( double const&, double const&, double const&)in main.o
"Element::minus(Element const&)",引用自:
vtable for Vectorin main.o
"typeinfo for Element",引用自:
typeinfo for Vectorin main.o
ld:未找到符号
collect2:ld 返回 1 个退出状态

这是因为派生的模板类与基类不在同一个文件中,这会导致编译器问题(类似于我必须在头文件中定义整个 Vector 类)?

我对 C++ 还很陌生,仍在阅读什么是 vtable 以及它们是如何工作的,但我还不能完全弄清楚这一点。

0 投票
3 回答
513 浏览

c++ - 指向成员函数、模板和继承混合的指针

我正在尝试创建一个通用的“回调”对象,它将保存任意数据并调用相关类的成员函数。由于内部政策,我不能使用 Boost。

回调对象如下所示:

它适用的课程:

以下测试按预期工作:

到现在为止还挺好。

但是,当同事尝试从Callback类派生而不是使用 atypedef时,由于指针不兼容,他们得到了编译错误:

我尝试在回调类中使用“奇怪的重复模板模式”并设法让派生类工作,但它破坏了使用该typedef方法的代码。

我的问题是:

如何修改 Callback 该类以处理这两种情况,而不需要该类用户的额外工作?

0 投票
3 回答
1518 浏览

asp.net - 在 ASP.NET 会话期间存储自定义“用户”对象的最佳位置在哪里?

我有一个 ASP.NET 应用程序,它需要在会话中跨页面记住有关用户(以及他们来自哪个公司)的一些信息。

我想这几乎是任何特定大小的 ASP.NET 应用程序的要求。这些年来,我使用了几种不同的方法。

过去,我在查询字符串参数中传递了一个 id,如下所示:

然后实例化每个页面上的对象(来自数据库)。

另一种常见的方法是将我的对象存储在会话变量中:

这样可以节省前往数据库的行程,但是如果用户对象很复杂并且站点有很多并发用户,我会担心使用的内存。

我最近继承了一个使用母版页上公共属性的应用程序,如下所示:

这样可以节省演员表,并且我认为对我来说看起来更具可读性,但我不知道它在性能方面是更好还是更差。它在 getter 中也有一些逻辑,如果私有值为 null,它会尝试从 Session 变量中获取它,尽管我不确定是否从未使用过(或每次获取都使用过!?)或什么。

我最新的想法是使用我的页面类。我有一个从标准 System.Web.UI.Page 基类派生的自定义页面类。它包括像 CurrentUser 这样的对象作为公共属性。这似乎工作正常。我更喜欢它。

但我真的不知道幕后发生了什么。任何人都可以就哪种方法更好以及为什么提出意见?

也欢迎这样做的替代建议。

更新: 我已经对使用 trace.axd 和 Trace.Write 进行了一些检查,它看起来既不是母版页版本,也不是自定义页面类版本“记住”页面之间的值。“get”方法有一行代码检查 User 属性是否为空,如果是,则从会话变量中读取它。当页面在给定页面上第一次访问属性(Master.User 或派生类的 this.User)时会发生这种情况,然后后续请求可以获取该值(无需转到会话变量)。

0 投票
2 回答
363 浏览

c++ - 以基实例为参数的派生类的构造函数

我有这个代码:

为什么该行B b2 = b1不调用构造函数B::B(const A &a)而是调用A::A(const A &a)?我怎样才能告诉编译器这样做?

0 投票
3 回答
10441 浏览

c++ - 为什么我的 C++ 子类需要显式构造函数?

我有一个声明和定义构造函数的基类,但由于某种原因,我的公共派生类没有看到该构造函数,因此我必须在派生类中显式声明一个转发构造函数:

在上面的代码中,我的WireCount1 wireCount1(100)声明被编译器拒绝(“No matching function for call to 'WireCount1::WireCount1(int)'”),而我的wireCount0wireCount2声明很好。

我不确定我是否理解为什么需要提供中所示的显式构造函数WireCount2。是因为编译器为 生成了默认构造函数WireCount1,而该构造函数隐藏了WireCount0构造函数吗?

作为参考,编译器是i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659).

0 投票
1 回答
95 浏览

oop - 我应该在派生类中有一个构造函数吗?

我的问题是这样的。我有一个 XMLUtility 类

和一个

和其他基本功能,如 addSetting、removeSetting、checkSettingExists 等。此类为非常基本的 xml 设置文件提供功能。

所以现在我需要更高级的设置处理。所以我创建了另一个类并从 XMLUtility 类派生它。

所以我最初的想法是我不需要这个类的构造函数,因为它将调用基类构造函数。但是我错了。

我的问题是上面的代码是否正确?我是否也需要在此构造函数中编写整个检查过程,还是由基类的构造函数处理?只是一个空的代码块是正确的吗?

0 投票
1 回答
127 浏览

iphone - iphone派生UITableViewController的最佳方式

我希望创建我的个人 UITableViewController 并使用界面生成器将其用于我的 UIViewController ......什么是最好和最快的方法?