小编ato*_*erz的帖子

如何检查一个类是否继承了另一个类而没有实例化它?

假设我有一个看起来像这样的类:

class Derived : // some inheritance stuff here
{
}
Run Code Online (Sandbox Code Playgroud)

我想在我的代码中检查这样的内容:

Derived is SomeType;
Run Code Online (Sandbox Code Playgroud)

但看起来像is运算符需要Derived是Dervied类型的变量,而不是Derived本身.我不想创建Derived类型的对象.
如何在SomeType不实例化的情况下确保Derived继承?

PS如果它有帮助,我想要一些where关键字与泛型有关的东西.
编辑:
类似于这个答案,但它正在检查一个对象.我想查看课程本身.

c# inheritance types

130
推荐指数
2
解决办法
9万
查看次数

我可以覆盖c#中的属性吗?怎么样?

我有这个基类:

abstract class Base
{
  public int x
  {
    get { throw new NotImplementedException(); }
  }
}
Run Code Online (Sandbox Code Playgroud)

以下的后代:

class Derived : Base
{
  public int x
  {
    get { //Actual Implementaion }
  }
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到这个警告,说Derived类的定义x是要隐藏Base的版本.是否可以覆盖c#like方法中的属性?

c# polymorphism inheritance overriding properties

68
推荐指数
3
解决办法
7万
查看次数

如何遍历/迭代STL Map?

需要知道如何遍历stl地图.我不想用它的钥匙.我不关心排序,只是一种访问它包含的所有元素的方法.有没有办法做到这一点?

c++ dictionary stl traversal

34
推荐指数
4
解决办法
4万
查看次数

什么是SEDA(分阶段事件驱动架构)?

SEDA:用于良好可扩展的互联网服务的架构

"SEDA为的缩写阶段式服务器模型,并分解一个复杂的,事件驱动的应用程序为一组的阶段由连接队列 ".

我知道这是一个架构,并且SEDA有很多实现(参见维基百科文章).什么是"舞台"?有人可以提供有关分阶段事件驱动架构的全面高级摘要,以及它与传统(未分级?)事件驱动架构的区别吗?

architecture stage event-driven eda

28
推荐指数
3
解决办法
2万
查看次数

如何计算递归函数的显式形式?

我有这个递归函数:

f(n) = 2 * f(n-1) + 3 * f(n-2) + 4
f(1) = 2
f(2) = 8
Run Code Online (Sandbox Code Playgroud)

我从经验中知道它的明确形式是:

f(n) = 3 ^ n - 1  // pow(3, n) - 1
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何方法可以证明这一点.我google了一下,但没有找到任何简单的理解.我已经知道生成函数可能解决了它,它们太复杂了,我宁愿不进入它们.我正在寻找一种更简单的方法.

PS如果它有帮助我记得这样的东西解决了它:

f(n) = 2 * f(n-1) + 3 * f(n-2) + 4
// consider f(n) = x ^ n
x ^ n = 2 * x ^ (n-1) + 3 * x ^ (n-2) + 4
Run Code Online (Sandbox Code Playgroud)

然后你以某种方式计算x导致显式形式的递归公式,但我不记得了

recursion explicit formula

15
推荐指数
2
解决办法
3万
查看次数

为什么我必须在c ++中的派生类中重新声明重写的函数?

假设我有以下代码:

class Iinterface
{
  virtual void abstractFunction()=0;
};

class Derived : public Iinterface
{
  void abstractFunction(); // Do I need this line?
};

Derived::abstractFunction()
{
  // implementation here
}
Run Code Online (Sandbox Code Playgroud)

如果我没有添加有问题的行,我会收到编译错误,说明abstractFunction未声明Derived.我正在使用VS 2008.
我不确定为什么我需要这个特定的行(不要把它与类声明之外提供的函数定义混淆),只要我继承Iinterface它就应该很明显我abstractFunction声明了.这是Visual Studio的问题还是由c ++标准强制执行?

c++ polymorphism overriding abstract pure-virtual

14
推荐指数
1
解决办法
5020
查看次数

如何在C#中调用C++ DLL

我在开发C++中编写了一个DLL.DLL的名称是"DllMain.dll",它包含两个函数:HelloWorldShowMe.头文件如下所示:

DLLIMPORT  void HelloWorld();
DLLIMPORT void ShowMe();
Run Code Online (Sandbox Code Playgroud)

源文件如下所示:

DLLIMPORT void HelloWorld ()
{
  MessageBox (0, "Hello World from DLL!\n", "Hi",MB_ICONINFORMATION);
}

DLLIMPORT void ShowMe()
{
 MessageBox (0, "How are u?", "Hi", MB_ICONINFORMATION);
}
Run Code Online (Sandbox Code Playgroud)

我将代码编译成DLL并从C#调用这两个函数.C#代码如下所示:

[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void HelloWorld();

[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void ShowMe();
Run Code Online (Sandbox Code Playgroud)

当我打电话功能的"HelloWorld",它运行良好,弹出一个消息框,但是当我调用该函数ShowMeEntryPointNotFoundException发生.我该如何避免这种异常?我是否需要添加extern "C"头文件?

c# dll

14
推荐指数
2
解决办法
7万
查看次数

在ASP.NET事件处理程序中使用async/await是否安全?

当我遇到这个时,我在ASP.NET中做了一些编码:

protected async void someButtonClickHandler(...)
{
    if(await blah)
        doSomething();
    else
        doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

在提出这个问题后,我对如何async/ await工作有了更好的理解.但是,让我感到震惊的是,以上述方式使用async/ 是否安全await
我的意思是在调用后调用await blah者继续执行.这意味着它可能会在await blah完成之前将响应呈现给客户端.这是正确的吗?如果是这种情况发生在doSomething()/ doSomethingElse().他们会被处决吗?如果它们被执行了,用户是否会看到其更改的效果?
在我的情况下,这些方法会改变显示给用户的一些数据,但我也想知道在一般情况下会发生什么.

c# asp.net webforms async-await

12
推荐指数
1
解决办法
2934
查看次数

g ++ conio.h:没有这样的文件或目录

我正在尝试编写一个使用conio.h头文件的g ++程序.我实际上要做的是调用gotoxy我在Borland编译器和Windows操作系统中使用的函数.

所以第一个问题是:gotoxyg ++中是否有函数或等价物?

第二:为什么我不能包括conio.h?我读了一些说我应该安装的东西libstdc++ package,我试过但似乎我已经拥有它(它伴随着gcc).

linux g++

11
推荐指数
2
解决办法
3万
查看次数

Linux系统调用创建进程和线程

我在一篇论文中读到,创建进程和线程的底层系统调用实际上是相同的,因此在线程上创建进程的成本并不是那么高.

  • 首先,我想知道创建进程/线程的系统调用是什么(可能是示例代码或链接?)
  • 其次,作者是否正确地假设创建进程而不是线程是否便宜?

编辑:
引用文章:

用进程替换pthread是非常便宜的,特别是在使用相同底层系统调用调用pthread和进程的Linux上.

linux multithreading process system-calls

11
推荐指数
2
解决办法
2万
查看次数