何时/为什么我要显式删除我的构造函数?假设原因是为了防止其使用,为什么不做到呢private
?
class Foo
{
public:
Foo() = delete;
};
Run Code Online (Sandbox Code Playgroud)
谢谢!
/* bar.h */
class bar{
/* standard stuff omitted */
std::vector<my_obj*> foo;
};
/* bar.cpp */
bar::bar(){
// foo = new std::vector<my_obj*>(); <-- why don't I need this line??
foo.push_back(new my_obj());
}
Run Code Online (Sandbox Code Playgroud)
为什么这个代码工作,即使我们没有为foo :: vector的新实例分配foo?
在PowerShell中,我需要解析联结的目标路径(符号链接).
例如,假设我有一个c:\someJunction
目标是的交叉点c:\temp\target
我试过各种变化$junc = Get-Item c:\someJunction
,但只能得到c:\someJunction
在本例中c:\temp\target
,如何找到给定连接点的目标路径?
当通过命令行使用python时,如果我在嵌套语句的前一行看到错误,是否有任何方法可以在输入后删除或编辑该行?
例如:
>>> file = open("file1", "w")
>>> for line in file:
... parts = line.split('|') <-- example, I meant to type '\' instead
... print parts[0:1]
... print ";"
... print parts[1:]
Run Code Online (Sandbox Code Playgroud)
所以,而不是重新整理整个事情来修复一个字符,我可以回过头来看看事后的事情吗?我知道我可以只在vim什么的代码它,并具有持久副本,我可以做任何事情,我想,但我希望用命令行一个方便,花花公子的把戏.
- 谢谢!
考虑以下...当我执行'ls'而没有任何标志时,它会将结果返回到一行,如下所示:
me@myComp /cygdrive/c/test/
$ ls
folder1/ folder2/ folder3/
Run Code Online (Sandbox Code Playgroud)
现在,如果我想对结果进行grep,说'2',我会得到以下结果:
me@myComp /cygdrive/c/test/
$ ls | grep 2
folder2/
Run Code Online (Sandbox Code Playgroud)
它不应该返回整条线路吗?我希望我用过这个结果ls -l | grep 2
.
在我看来,管道操作员正在以某种方式将输入更改为grep,或者以某种方式ls意识到管道并更改其自己的输出.
folder1/ folder2/ folder3/
是单个字符串,不是吗?那么grep怎么知道只返回folder2/
,而不是folder1/ folder2/ folder3/
?
我一直在测试rvalue引用并移动语义,并希望确保我理解何时应该省略副本以及何时应该遵循移动语义.
鉴于以下内容
class NRVCA
{
public:
NRVCA(int x):
{}
NRVCA(const NRVCA & Rhs)
{}
NRVCA& operator=(const NRVCA& dref)
{}
};
NVCRA GetATemp()
{
return NVCRA(5);
}
NVCRA GetACopy()
{
NVCRA ret(5);
...
return ret;
}
int main()
{
//This call will be elided allays and invoke the single param constructor
NVCRA A = GetATemp();
//This call will be a traditional copy the complier may elide this
// if so the work will be done inline
NVCRA B = GetACopy();
} …
Run Code Online (Sandbox Code Playgroud) 在下面的示例中,我想删除该std::wstring(std::widen(...))
部分,但'#'宏只返回一个char字符串文字 - 有没有办法容纳wchar?
#define FOO_MACRO(className)\
struct className##Factory : public OtherClass {\
// does some stuff here\
} className##Factory;\
someMap->add(std::wstring(std::widen(#className), className##Factory)))
Run Code Online (Sandbox Code Playgroud)
我怎么用wchar做同样的事情?
我想知道我在这里做错了什么......
我正在试验一个简单而人为的函数,取它对 x 的某些值的导数:
f(x) = x^3
,然后f'(x) = 3x^2
计算 x 在 1、2、3 处的导数
>>> from scipy import misc
>>> def x2(x): return x*x*x
...
>>> misc.derivative(x2,1)
4.0
>>> misc.derivative(x2,2)
13.0
>>> misc.derivative(x2,3)
28.0
Run Code Online (Sandbox Code Playgroud)
问题:结果不正确,它们都比它们应有的值大 +1(它们应该分别是 3、12 和 27)。
当我构建/更新我的标签文件时,ctags从当前目录开始并以递归方式向下运行.
我希望它还包括一个完全不同的搜索路径,一个映射的网络驱动器,并将这些结果添加到我的标签文件中.
有没有办法做到这一点?
我正在使用Python2.7.当我输入help()并输入"modules"时,我收到了消息
>>> help()
Welcome to Python 2.7! This is the online help utility.
...
help> modules
Please wait a moment while I gather a list of all available modules...
Run Code Online (Sandbox Code Playgroud)
然后我收到一系列警告
Warning: cannot register existing type 'GtkWidget'
...
Warning: cannot add class private field to invalid type '<invalid>'
...
Run Code Online (Sandbox Code Playgroud)
然后整个事情挂起......我必须开始第二个远程会话来发送SIGKILL.
显然有些事情是错的,但我最惊讶的是它在网络上收集信息的位置.
Python的帮助文档是否可以存储在本地?如何阻止它进入网络?我想要定期帮助,而不是在线帮助.
以下如何工作?
>>> 3*[2]
>>> [2,2,2]
>>> [2]*3
>>> [2,2,2]
Run Code Online (Sandbox Code Playgroud)
我明白这*
是位置扩展运算符.既然[2]
是一个包含单个项目的列表,我看不出如何3*[2]
扩展到任何有意义的东西,我期待一个SyntaxError
,但事实并非如此.
我很难找到现有的答案,我找到的只是引用*args
和**kwargs
传递可变参数列表,这些都没有完全回答我的问题.