我正在阅读C++编程语言.Stroustrup在其中陈述sizeof(char) == 1和1 <= sizeof(bool).具体取决于实施.为什么像布尔这样的简单值与char相同?
在该this指针 [class.this],C++标准规定:
类的
this成员函数的类型X是X*.
即this不是const.但那为什么呢
struct M {
M() { this = new M; }
};
Run Code Online (Sandbox Code Playgroud)
给
error: invalid lvalue in assignment <-- gcc
'=' : left operand must be l-value <-- VC++
'=' : left operand must be l-value <-- clang++
'=' : left operand must be l-value <-- ICC
(source: some online compiler frontends)
Run Code Online (Sandbox Code Playgroud)
换句话说,this不是const,但它确实是!
标准说
联合的至多一个非静态数据成员可以具有支撑或等于初始化器.
但
struct Point {
Point() {}
Point(int x, int y): x_(x), y_(y) {}
int x_, y_;
};
union U {
int z;
double w;
Point p = Point(1,2);
};
#include <iostream>
int main () {
U u;
std::cout << u.p.x_ << ":" << u.p.y_ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
打印4196960:0而不是预期的1:2.
我认为这是一个编译器错误.是这样吗?
必须在C++实现中将字符'0' - '9'设置为具有连续的数值,即:
'0' -> 0+n
'1' -> 1+n
m -> m+n
'9' -> 9+n
Run Code Online (Sandbox Code Playgroud)
我在isdigit([分类](22.3.3.1字符分类))*的文档中找不到它,也不能在语言环境文档中找到它(但也许我看起来不够努力).
在2.3字符集中,我们发现了这一点
基本源字符集由96个字符组成:空格字符,表示水平制表符的控制字符,垂直制表符,换页符和换行符,以及以下91个图形字符
但它没有提到任何顺序(但也许我看起来不够努力).
*:有趣的脚注:
当在循环中使用时,缓存ctype <> facet并直接使用它[而不是isdigit()等,结束注释]或使用ctype <> :: is的向量形式更快.
之后编辑我自己的评论
我认为问题在于,当PHP将文件解析为"compile"时,首先它会将类名转换为完全限定名.因此索引将被转换为Controller\Home\Index.之后,是PHP将变量转换为其值.因此,如果我使用变量作为类名,它将不会限定其名称,因为该步骤已经发生.这就是为什么找不到课程.这只是一个猜测,但最有可能就是 Blockquote
结束编辑
我使用Symfony2项目的UniversalClassLoader来自动加载我的类,但我发现了一些我无法解决的奇怪错误.
自动加载的东西工作正常,但后来我遇到了这个问题:
$controller = new Index(); // It works!
$controller_name = "Controller\\Home\\Index";
$controller2 = new $controller_name(); // It works!
$controller_name = "Index";
$controller3 = new $controller_name(); // Fatal error: Class 'Index' not found
Run Code Online (Sandbox Code Playgroud)
这2个案例工作得很好.在第一个,因为我使用"使用Controller\Home;" 在我的脚本开头,我可以只使用"new Index();" 没有问题.但如果不是写"索引",而是使用像$ var ="Index"这样的字符串变量,它就不起作用了.我不明白为什么.我需要这个脚本是动态的,这就是为什么我需要一个变量.
谢谢!
额外的长尾搜索:
有一种简单的方法可以通过Windows中的相关程序打开文件吗?(比如在Windows资源管理器中双击它,但使用我的代码自动完成)
例如,在计算机A上,"text.txt"将在wordpad中打开,但在计算机B上,它将由Notepad ++打开,因为用户文件扩展名分配.
我试过ShellExecute
ShellExecute(0, L"open", L"c:\\windows\\notepad.exe" ,L"c:\\outfile.txt" , 0 , SW_SHOW );
Run Code Online (Sandbox Code Playgroud)
这有效,但如果我省略notepad.exe参数奇怪的事情发生(显示随机浏览器).
有人可以帮我解决这个mysql问题吗?我正在尝试从db获取所有表名.
在我的数据库中,我有以下表:
_table1,_table2,table3,table4,table5_xrefs
但是我想在开头只得到没有_的表,最后没有_xref.所以在这个例子中我只需要table3和table4.
我正在使用show tables显示所有表名称,并在我使用php匹配正确的表名后.我想知道我是否可以只使用mysql查询来做同样的事情.
我正在读一篇关于整数安全性的文章.这是链接:http: //ptgmedia.pearsoncmg.com/images/0321335724/samplechapter/seacord_ch05.pdf
在页166中,有说:
涉及无符号操作数的计算永远不会溢出,因为无法由结果无符号整数类型表示的结果以模数减少为大于可由结果类型表示的最大值的数.
这是什么意思?感谢您的回复.
在Unix/Linux下,我的活动RAII对象在分叉时会发生什么?会有双重删除吗?什么是复制构造和分配?如何确保没有发生任何不良事件?
添加QT += network webkit,我尝试QT += webkit了.pro解决方案文件,并从QtCreator内部运行qmake,并收到此错误:
error: Unknown module(s) in QT: webkit
Run Code Online (Sandbox Code Playgroud)
我真的需要利用这些包括:
#include <QWebView>
#include <QUrl>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?