小编Sri*_*ian的帖子

为什么不能从c ++ std字符串类派生?

我想询问有效C++中的具体要点.

它说:

如果一个类需要像多态类一样运行,那么析构函数应该是虚拟的.它进一步补充说,由于std::string没有虚拟析构函数,因此永远不应该从中派生出来.还std::string甚至没有设计成一个基类,忘记多态基类.

我不明白一个类中具体要求什么才有资格成为基类(不是多态的)?

我不应该从std::string类派生的唯一原因是它没有虚拟析构函数吗?为了可重用性,可以定义基类,并且多个派生类可以从中继承.那么什么使得std::string甚至没有资格成为基类?

此外,如果存在纯粹为可重用性目的而定义的基类,并且有许多派生类型,是否有任何方法可以阻止客户端执行,Base* p = new Derived()因为这些类并不是要多态地使用?

c++ string inheritance stl

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

如何在Windows中查找进程持有的套接字列表?

我有一个.Net应用程序,它维护一个套接字池来重用它们.怀疑它可能在没有释放它们的情况下持有太多这些插座.有没有办法找到应用程序在Windows中持有的套接字句柄数?

sockets windows

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

如何读取Zookeeper事务日志?

是否有任何现有工具可以帮助读取Zookeeper事务日志?默认情况下,它是二进制格式,我想以人类可读的形式阅读它.

apache-zookeeper

18
推荐指数
2
解决办法
8179
查看次数

如何将unordered_set与自定义类型一起使用?

是否需要为自定义类型创建自己的哈希函数?我可以使用unordered_set没有默认值吗?

c++ visual-c++

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

如何在sql中加入时保持顺序

表1和表2的主键(key1,key2)是相同的.表3是用户定义的表,其中一个列field5对于table2是通用的.我需要从表1和表2中选择行,其中table2中的field5在table3中.我需要以与table3相同的顺序获取行.

表格1

key1 key2 field1 field2

表2

key1 key2 field3 field4 field5

用户定义的表

字段5

我正在考虑的问题是

select a.key1, a.key2, a.field1, a.field2, b.field3, b.field4
from table1 as a INNER JOIN table2 as b ON a.key1 = b.key1 AND a.key2 = b.key2
where b.field5 in (select field5 from table3)
Run Code Online (Sandbox Code Playgroud)

这不会给我行与表3中相同的顺序.

我需要这样的东西来维持秩序吗?

select a.key1, a.key2, a.field1, a.field2, d.field3, d.field4 from
table1 as a INNER JOIN
 (select b.key1, b.key2, b.field3, b.field4
  from table2 as b INNER JOIN table3 as c
  ON b.field5 = c.field5) as …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

如何从文件名中查找哪个进程具有文件句柄

Windows c ++ API中是否有任何内容可以为我提供一个具有给定文件句柄的进程列表?

c++ winapi

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

如何在sbt中为Scala-only项目生成javadoc样式的文档?

我在sbt下有一个Scala项目.我想为它生成一个javadoc,因为项目API的大多数用户都是Java开发人员.这可能吗?

java scala sbt

8
推荐指数
2
解决办法
1602
查看次数

如何将可选的闭包参数传​​递给函数?

我想将一个闭包传递给一个方法作为一个选项,我正在做如下所示的事情.我收到编译错误,如下所示.是否可以将可选的闭包参数传​​递给函数?

def sampleMethod(a: String, b: String, optionalMethod: Option[(String, Int) => Unit]) {
    // do some processing with a and b
    optionalMethod match {
      case Some(optionalMethod) => {
        optionalMethod("a",3)
      }
      case _
      log("no optional method passed")
    }
}

// definition of optMethod in some other place
val optMethod = (c: String, d: Int) => {
  // some processing with c, d and external values 
}

// invoke
sampleMethod("hi", "bye", optMethod) => FAILS TO COMPILE

ERROR = type mismatch. expecting Option[(String, Int) …
Run Code Online (Sandbox Code Playgroud)

scala

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

如何为Gradle项目生成类路径?

我有一个包含多个包的gradle项目.构建之后,每个包都在build/libs中生成jar文件.外部jar依赖项被拉入〜/ .gradle.我现在想从命令行本地运行具有适当类路径的服务.为此,我正在编写一个构造类路径的脚本.问题是脚本无法理解所有外部依赖项,因此无法构造类路径.有没有办法让gradle帮忙解决这个问题?理想情况下,我想在构建结束时将所有依赖项转储到一个文件夹中.

java gradle

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

为什么这段代码在VS中编译?("额外"逗号)

下面的行在for循环中.如果方法失败,则需要中断.CATEGORY_1是一个枚举.我将此枚举添加为AddToList方法的新参数,并带有默认值.如果你仔细看下面,我实际上错误地把逗号和枚举放在函数的参数列表之外.这与VS2010完美匹配.所以我很难找到为该参数而不是CATEGORY_1传递的默认值.有谁知道为什么这成功了?

if (! AddToList(obj1, (unsigned int) Val), CATEGORY_1)
{
    break;
}
Run Code Online (Sandbox Code Playgroud)

c++ comma-operator

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

是否可以在单个分区上运行DBCC CHECKDB?

是否可以在SQL Server的单个分区上运行DBCC CHECKDB?我知道,如果分区位于单独的文件组中,我们可以使用CHECKFILEGROUP,但是如果分区不在单独的文件组中,怎么办?是否可以使用CHECKDB指定分区号?

sql-server sql-server-2008

2
推荐指数
1
解决办法
627
查看次数

何时使用VirtualAlloc Vs new?

可能重复:
VirtualAlloc和HeapAlloc有什么区别?

我想预分配一大块内存,比如说1gb来实现一个内存池。Virtual Alloc使用4kb的页面大小进行分配。在这种情况下,使用virtualalloc而不是new有什么好处?在这种情况下不应该使用new,还是使用new而不是virtual alloc有任何缺点?

c++ windows visual-c++

2
推荐指数
1
解决办法
4626
查看次数

为什么以下代码在VS2010中成功编译?

我有以下异常类.

class ExceptionTest : std::exception
{
public:
ExceptionTest(int value):
  m_value(value)
{
}
~ExceptionTest()
{
}
private:
ExceptionTest(const ExceptionTest& test)
{
}

int m_value;
};
Run Code Online (Sandbox Code Playgroud)

然后我以这种方式使用它 -

int checkexception()
{
throw ExceptionTest(2);
}

int main()
{
try
{
    checkexception();
}
catch (ExceptionTest& exception)
{
    cout<<"haha";
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)

即使复制构造函数是私有的,这也完美无缺.

如果按值捕获异常,则失败 -

int main()
{
try
{
    checkexception();
}
catch (ExceptionTest exception) --> this fails
{
    cout<<"haha";
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

error C2316: 'ExceptionTest' : cannot be caught as the …
Run Code Online (Sandbox Code Playgroud)

c++

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