标签: derived

派生的构造函数

在以下代码中:

import java.io.*;

public class MyClass1
{
     MyClass1()
     {
         System.out.println("base class");
     }
     public void print()
     {
        System.out.println("base print");
     }
}

class ChildClass extends MyClass1
{
    public ChildClass()
    {
       System.out.println("child class");
    }
    public void print()
    {

      System.out.println("child print");
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么当我创建ChildClass类型的实例时,基类的构造函数也会被执行?

java constructor derived

0
推荐指数
1
解决办法
986
查看次数

C++派生类

我有一个类(Queue),它继承自一个名为Stack的类.它是这样的:

template <class T> class Stack
{
         public:
                virtual const T pop();
                 LinkedList<T> lst;
};

template <class T> class Queue : public Stack<T>
{
         public:
                virtual const T pop();
};

template <class T> const T Queue<T>::pop()
{
                             const T val = lst[0];
                             return val;
}
Run Code Online (Sandbox Code Playgroud)

编译器说"lst undecleared"......为什么?

c++ inheritance class derived

0
推荐指数
1
解决办法
700
查看次数

在TCustomRichEdit上方添加一个速度按钮

我正在尝试创建一个TCustomRichEdit,上面有一些速度按钮.我怎样才能完成这个行为?组件的高度需要是按钮+ richedit.

[B][I][U]
+-------+
|A1REdit|
|       |
+-------+
Run Code Online (Sandbox Code Playgroud)

目前我有以下代码:

private
  FBoldButton: TSpeedButton;

constructor TA1RichEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FBoldButton := TSpeedButton.Create(Self);
  FBoldButton.Parent := Self;
end;

destructor TA1RichEdit.Destroy;
begin
  FreeAndNil(FBoldButton);

  inherited;
end;
Run Code Online (Sandbox Code Playgroud)

这描绘了richedit上的速度按钮(因为richedit是父级),我需要按钮位于richedit之上.在这段代码之后,richedit并没有像它应该的那样绘画.

delphi components derived custom-controls

0
推荐指数
1
解决办法
534
查看次数

覆盖派生类上的虚函数并仍然调用基本功能

class Base
{
    public:
    void virtual func() {   int i = 0; cout << "i"; }
}

class Derived: public Base
{
    public:
    void func() {  .....******   }
}
Run Code Online (Sandbox Code Playgroud)

在派生类中,当您从派生对象调用func时,如果已经覆盖了func,那么如何仍然具有基本功能.你能打电话给Base.func()吗?谢谢你

c++ virtual inheritance derived

0
推荐指数
1
解决办法
104
查看次数

是否可以将实例提升为派生类的实例?

是否可以将实例提升为派生类的实例?

例如,假设有一个基类Vehicle. Vehicle已派生类:Boat,Automobile,Airplane,等...

Vehicle创建新的类型实例时,车辆的类型是未知的.
后来发现车辆是什么,说它是一个Boat.是否可以将Vehicle实例提升为Boat对象?

澄清:Vehicle实例可能已设置内容,并且提升的对象需要保留这些内容

PS我现在成功地做到了这一点,但是手工而且非常笨重.所以,我想知道是否有一种普遍接受的,规范的方式.

(2017年9月24日)Eric Lippert在下面的每个问题中添加了真实案例:

*我的整个C#体验都是自学成才的,所以我没有学术基础,对"模式"等知之甚少.工厂模式和复合模式的想法听起来很有趣,可能是解决问题的更好方法(需要研究).

我的实际情况是,我使用共享总线架构连接到计算机的测量设备(外围设备)自动进行电子测量.在任何给定的测试平台上,可以根据用户的选择连接各种不同的外围设备.为了自动确定哪些外设可用,我执行一个本地发现过程,找到每个连接外设的总线地址.然后,为了与发现的未知类型的外围设备通信,我创建了一个我调用的基类的实例Device. Device具有某些基本的I/O协议方法和属性,如总线地址,通信超时等.Device然后使用我查询外围设备的身份,找出制造商,型号和序列号.

从该信息I确定的外周的类型和希望"促进"的实例Device将在该外设类型,诸如以一个派生类的实例具体地SpectrumAnalyzerOscilloscope或任何.

我认为我在不知不觉中所做的是在工厂类和基类之间创建一个交叉.一旦知道了外围设备的类型,Device就有一个方法可以创建派生类的新实例,并将自己的属性深度复制到该派生实例.

也许如果我在工厂模式方面重新考虑解决方案而不是基类,我可以改进逻辑.

有趣的东西......谢谢你.*

c# derived promoting

0
推荐指数
1
解决办法
253
查看次数