Q1.为什么使用带有static_cast的NULL指针会导致崩溃,而dynamic_cast和reinterpret_cast会返回一个NULL指针?
问题发生在类似于下面给出的方法中:
void A::SetEntity(B* pEntity, int iMyEntityType)
{
switch (iMyEntityType)
{
case ENTITY1:
{
Set1(static_cast<C*>(pEntity));
return;
}
case ENTITY2:
{
Set2(static_cast<D*>(pEntity));
return;
}
case ENTITY3:
{
Set3(static_cast<E*>(pEntity));
return;
}
}
}
Inheritance:
class X: public B
class Y: public B
class Z: public B
class C: public X, public M
class D: public Y, public M
class E: public Z, public M
Run Code Online (Sandbox Code Playgroud)
Q2.从B到C/D/E的static_casting是否有效?(这个工作正常,直到输入变为NULL)
我正在使用gcc 3.4.3版
假设您有一个在隐藏表单字段中传递用户名和密码的Web应用程序.
我知道这是一个非常糟糕的主意,但我有兴趣列举为什么......任何想法?
更新 - 这是一个假设的问题.
我找不到一个只列举原因的资源 - 我知道为什么这是一个坏主意的很多原因,我想看看是否有其他原因我没有想到并创建我正在寻找的资源对于.谢谢!
有没有办法从php.ini文件中禁用eval函数.我尝试过ini_set函数,但即使这样也行不通.
基本上我希望我的框架用户决定是否应该通过配置文件启用此功能.如果他们拒绝,我应该能够使用代码禁用它,因为我无法访问安装了我的框架的每个用户的服务器并使用php.ini文件禁用它.
正如我所说,没有goint到php.ini文件,所以ini指令disable_functions不应该在答案中发布.
请帮忙.
我目前参与的项目中,我们/应用程序需要能够发现具有在LAN上运行的相同应用程序名称的应用程序的其他实例(以下称为节点).
先决条件:所有节点都知道自己的IP地址和TCP端口号所有节点都有一个名称所有节点都可以访问局域网
我需要的:
所有节点都需要知道每个其他节点的IP地址和TCP端口.如果节点出现故障,我将不得不以编程方式通知此情况.如果出现新节点,我将不得不以编程方式通知此情况.它的基本原理是不需要主服务器或其他应用程序,它必须是我可以集成到当前应用程序中的API.此外,它必须是开源的,并且最好是许可的MIT或ApacheV2.
就这样!
该应用程序是基于JVM的,因此任何API都可以.我一直在看ZooKeeper,但它似乎是我们需要的小功能的一个很大的依赖.
并且,如果你不知道任何API,但是有一些很好的链接可以分享如何通过自己编写来实现这一点(白皮书,博客,书籍等等),我会非常乐意接受这样的事情.
所以问题是,我该怎么做?
这是我的freemarker模板的一部分:
${order.needByDate?if_exists?date}
我希望它的工作方式如下:
needByDate为null,则不写入任何内容以上仅适用于第二种情况.实现这一目标的正确方法是什么?
我正在使用Vim 7.2,使用+ xterm_clipboard编译,在xterm中通过putty.我已经放入set clipboard=unnamed了.vimrc,从我在其他线程中读到的内容,这应该将所有的yanks/deletes放到系统剪贴板中.然而,当我试图粘贴我已经被抓到像记事本这样的MS应用程序时,它无法正常工作.
当我使用鼠标在vim中选择文本时,它会自动复制到系统(MS剪贴板).我想在使用像3yy这样的键盘命令时拥有相同的功能.
谁能告诉我我做错了什么?
我正在观看Jon Skeet的哥本哈根C#谈话视频,我最终得到了这段代码.
问题:
代码打印完成后发生了什么.我的意思是为什么会iterator.MoveNext()失败?
CODE:
class IteratorBlocks
{
public static IEnumerable<string> GetStringsForever()
{
string current = "";
char nextChar = 'a';
try
{
while (true)
{
current += nextChar;
nextChar++;
if (nextChar > 'z')
{
nextChar = 'a';
}
yield return current;
}
}
finally
{
Console.WriteLine("Finished");
}
}
}
class Program
{
static void Main(string[] args)
{
IEnumerable<string> strings = IteratorBlocks.GetStringsForever();
IEnumerator<string> iterator = strings.GetEnumerator();
for (int i = 0; i < 10; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个程序集,其中包含可以从IIS或控制台应用程序调用的函数.
因此,我选择了以下方法来获取路径:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
Run Code Online (Sandbox Code Playgroud)
显然,在从IIS调用函数的情况下,这将返回bin目录.
我打算在这条路径上创建一个txt文件.将文本文件放在bin目录中是一个坏主意吗?请提出有效的异议(如果有的话),这可能会导致问题.
我有一个包含以下空格分隔条目的变量.
variable="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
Run Code Online (Sandbox Code Playgroud)
如何在不排序的情况下删除重复项?
#Something like this.
new_variable="apple lemon papaya avocado grapes mango banana"
Run Code Online (Sandbox Code Playgroud)
我发现某个脚本可以完成删除变量的重复,但会对内容进行排序.
#Not something like this.
new_variable=$(echo "$variable"|tr " " "\n"|sort|uniq|tr "\n" " ")
echo $new_variable
apple avocado banana grapes lemon mango papaya
Run Code Online (Sandbox Code Playgroud) 请注意:这个问题是关于"析构函数"和"终结器"之间的术语差异及其正确用法.我只提供了在C#和C++/CLI中使用它们的示例,以说明我提出问题的原因.我很清楚它是如何在C#和CLR中实现的,但我问的是术语的正确使用.
在C#世界中,术语"析构函数"和"终结器"似乎几乎可以互换使用,我怀疑是因为C#规范使用"析构函数"一词来描述非确定性清理功能,而CLR文档总是使用单词"终结者",所以在C#领域内他们的意思相同.
但是,在C++/CLI规范中,两者之间存在差异.它允许确定性和非确定性清理,并使用术语"析构函数"作为确定性功能,使用"终结器"作为非确定性功能:
终结器提供非确定性清理.终结器是在垃圾收集期间执行的"最后机会"函数,通常在未执行析构函数的对象上执行.
另外,维基百科对析构函数和终结器的描述表明析构函数和终结符是单独的概念,并且支持C++/CLI规范使用与确定性有关的术语:
与析构函数不同,终结器不是确定性的.当程序显式释放对象时,将运行析构函数.相反,当内部垃圾收集系统释放对象时,执行终结器.
问题:
从计算机科学的角度来看,是否存在"析构函数"和"终结器"之间明确定义的区别,或者术语是否只能在上下文中定义?
如果存在明确定义的差异,那么为什么C#规范会使用"错误"的术语?
c# ×2
java ×2
.net ×1
api ×1
asp.net ×1
bash ×1
c++ ×1
casting ×1
clipboard ×1
copy-paste ×1
destructor ×1
eval ×1
finalizer ×1
forms ×1
freemarker ×1
function ×1
iis ×1
iterator ×1
php ×1
putty ×1
security ×1
shell ×1
sorting ×1
tcp ×1
terminology ×1
udp ×1
unix ×1
variables ×1
vim ×1
xterm ×1