无论出于何种原因,我需要两次通过mysql结果集.有办法吗?我不想两次运行查询,我不想重写脚本,以便将行存储在某处,然后再重新使用它们.
我对大多数对我来说都不熟悉的函数声明的C程序感到困惑.
void *func_name(void *param){
...
}
Run Code Online (Sandbox Code Playgroud)
什么*意味着这个功能?我对*变量类型中的()的理解是它创建了一个指向另一个变量的指针,因此它能够跟踪后一个变量存储在内存中的地址.但在这个函数的情况下,我不知道这个*星号是什么意思.
纯虚函数是那些虚拟的成员函数,具有pure-specifier(= 0;)
C++ 03第10.4条第2款告诉我们抽象类是什么,作为旁注,以下内容:
[注意:函数声明不能同时提供纯指定符和定义-end note] [示例:
struct C {
virtual void f() = 0 { }; // ill-formed
};
Run Code Online (Sandbox Code Playgroud)
- 末端的例子]
对于那些不太熟悉这个问题的人,请注意纯虚函数可以有定义,但上面提到的条款禁止这些定义以内联方式出现(lexically in-class).(对于定义纯虚函数的用法,您可能会看到,例如,这个GotW)
现在,对于所有其他类型和类型的函数,它被允许提供类内定义,并且这种限制乍一看似乎绝对是人为的和莫名其妙的.想到这一点,它似乎在第二次和随后的一瞥:)但我相信如果没有具体原因那么限制将不存在.
我的问题是:有人知道这些具体原因吗?也欢迎良好的猜测.
笔记:
inline此问题中的单词未引用内联关键字.它应该是词汇上的词汇在进入python之前,我开始使用一些Objective-C/Cocoa书籍.我记得,大多数函数都需要明确说明关键字参数.直到最近我才忘记了这一切,并在Python中使用了位置参数.但是最近,我遇到了一些由不正当的职位造成的错误 - 他们是偷偷摸摸的小东西.
让我思考 - 一般来说,除非有特殊需要非关键字参数的情况 - 有没有什么好的理由不使用关键字参数?即使是简单的功能,它总是被认为是不好的风格吗?
我觉得我的大多数50行程序已经定期扩展到500行或更多行,如果我习惯于总是使用关键字参数,那么随着代码的增长,代码将更易于阅读和维护.这可能不是这样的原因吗?
更新:
我得到的总体印象是它的风格偏好,有许多好的参数,它们通常不应该用于非常简单的参数,但在其他方面与良好的风格一致.在接受之前我只是想澄清一下 - 这种方法是否存在任何特定的非风格问题 - 例如,重要的性能命中?
例如,class Base有两个公共方法:foo()和bar().类Derived继承自类Base.在课堂上Derived,我想foo()公开但bar()私下.以下代码是正确和自然的方式吗?
class Base {
public:
void foo();
void bar();
};
class Derived : public Base {
private:
void bar();
};
Run Code Online (Sandbox Code Playgroud) 我试图找到一个表而不是另一个表中的行,两个表都在不同的数据库中,并且在我用来匹配的列上也有不同的列名.
我有一个查询,下面的代码,我认为它可能有效,但它太慢了:
SELECT `pm`.`id`
FROM `R2R`.`partmaster` `pm`
WHERE NOT EXISTS (
SELECT *
FROM `wpsapi4`.`product_details` `pd`
WHERE `pm`.`id` = `pd`.`part_num`
)
Run Code Online (Sandbox Code Playgroud)
所以查询尝试执行如下操作:
从R2R.partmaster数据库中选择不在wpsapi4.product_details数据库中的所有ID.我匹配的列是partmaster.id和product_details.part_num
我试图从参数传递的文件名中获取没有扩展名的原始文件名:
int main ( int argc, char *argv[] )
{
// Check to make sure there is a single argument
if ( argc != 2 )
{
cout<<"usage: "<< argv[0] <<" <filename>\n";
return 1;
}
// Remove the extension if it was supplied from argv[1] -- pseudocode
char* filename = removeExtension(argv[1]);
cout << filename;
}
Run Code Online (Sandbox Code Playgroud)
例如,当我传入"test.dat"时,文件名应为"test".
MSDN 认为匿名结构在C++中是非标准的:
Microsoft C扩展允许您在另一个结构中声明结构变量而不为其指定名称.这些嵌套结构称为匿名结构.C++不允许匿名结构.
您可以访问匿名结构的成员,就好像它们是包含结构中的成员一样.
我被告知这个功能不一定只是创建一个未命名的结构,但我不能看到标准措辞的区别.
C++ 11说:
[C++11: 9/1]:[..]一个类说明符,其类头省略了class-head-name,定义了一个未命名的类.
并为缺少名称的类型定义提供完整的语法结构.
C++ 03缺少这种明确的措辞,但同样表明identifier类型定义中的类型是可选的,并在9.4.2/5和中引用了"未命名的类" 3.5/4.
我使用一个代码,我将枚举*转换为int*.像这样的东西:
enum foo { ... }
...
foo foobar;
int *pi = reinterpret_cast<int*>(&foobar);
Run Code Online (Sandbox Code Playgroud)
在编译代码(g ++ 4.1.2)时,我收到以下警告消息:
dereferencing type-punned pointer will break strict-aliasing rules
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了这条消息,发现只有在严格的别名优化打开时才会发生这种情况.我有以下问题:
是的,我实际上需要这种别名.
在C++中,我可以像这样打印调试输出:
printf(
"FILE: %s, FUNC: %s, LINE: %d, LOG: %s\n",
__FILE__,
__FUNCTION__,
__LINE__,
logmessage
);
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中做类似的事情?