为什么这个int开关有效:
public class Foo {
private final static int ONE = 1;
private final static int TWO = 2;
public static void main(String[] args) {
int value = 1;
switch (value) {
case ONE: break;
case TWO: break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这个枚举开关不是:
import java.lang.annotation.RetentionPolicy;
public class Foo {
private final static RetentionPolicy RT = RetentionPolicy.RUNTIME;
private final static RetentionPolicy SRC = RetentionPolicy.SOURCE;
public static void main(String[] args) {
RetentionPolicy value = RetentionPolicy.RUNTIME;
switch (value) {
case RT: break;
case SRC: …Run Code Online (Sandbox Code Playgroud) 只是阅读"斯科特迈耶斯"的一篇古老但有趣的文章
http://aristeia.com/Papers/C++ReportColumns/novdec95.pdf
基本上它是关于宁愿使用'\n'过std::endl(我同意,并使用相同的扩充年).
但是最后一部分表明这不包含在他的书中,因为整个事情由于两点而变得没有实际意义:
std::cout 没有缓冲.ios::unitbuf未明确定义on std :: cout 的状态(因此依赖于实现).我做了一个快速查看,但找不到明确的标准参考1是真的.是否std::cout与我一直以来的理解相反?
STL/Boost涵盖所有低级别的东西.
但是更高层次的概念呢?
Windows:我们有多个窗口库
但有人在制定统一的窗口标准吗?包含以上所有内容的东西是可以接受的.(即使它只访问常见的东西,它将是一个起点).
网络:
有几个(包括Boost低级别的东西).
但有没有人在基于服务的网络层工作?
Java/C#在其标准库中具有的所有其他内容.
这些东西让初学者更容易跳入并说哇做了,它可以在任何地方(几乎)工作.
无论如何.希望有一些很酷的项目.
编辑
也许没有一个.但是,如果有一对可以捆绑在一起作为一个起点(并且可能随着时间的推移而修改(在那里被弃用的关键字))成为一个很好的整合.
注意:Windows只是我要找的一小部分.Java/C#语言比GUI更加强大.什么是一组很好的库,可以在一个地方获得所有功能.
实际上我的问题都在标题中.
无论如何:
我有一个类,我使用显式构造函数:
.h
class MyClass
{
public:
explicit MyClass(const string& s): query(s) {}
private:
string query;
}
Run Code Online (Sandbox Code Playgroud)
是否必须在实现(.cpp)文件中放置显式关键字?
在网站上,我使用OpenID(基于StackOverflow)实现了登录.
但我似乎无法退出.
在我的主机上我可以注销但是当用户再次尝试登录时(特别是使用谷歌),身份验证会通过而无需用户输入名称和密码.
如何向OpenID提供商表明用户不再登录该站点?
我试图导航我的新EC2设置,并希望找到Rails的AMI设置.我一直遇到麻烦.基本上,我正在寻找这样的东西:
* Apache 2.2
* Ruby Enterprise Edtion (REE)
* Passenger
* MySql Installed and configured with Ruby
Run Code Online (Sandbox Code Playgroud)
任何人都有一个AMI,他们可以指向我的基本轨道堆栈?
感谢您的回复/想法.我见过大多数这些选择.我想我会选择一个干净的Linux AMI,然后使用这样的东西自己定制它:
http://www.rubyinside.com/how-to-install-a-ruby-18-stack-on-ubuntu-810-from-scratch-1566.html
此外,是的,我计划在单个EC2实例上运行Rails作为VPS的替代方案.如果我使用预留的实例,我基本上可以获得一台专用机器和1.7GB的RAM,每月约22美元.这击败了我发现的任何VPS.还有其他成本和负担,但我会继续调查是否有可能.
谢谢.
看看Java和C#,他们设法根据基于特殊语言的anotation做一些邪恶的处理(如果这是不正确的名字,请原谅我).
在C++中,我们有两个问题:
1)无法使用在运行时可访问的类型信息来注释类.
2)解析源以生成东西是复杂的方法.
但我认为这可以通过一些模板元编程来完成,以实现与anotations相同的基本效果(仍然只是考虑它).与专门针对不同类型的char_traits一样,xml_traits模板可以以明确的方式使用.此traits类可用于通过专门化您尝试序列化的类的特征来定义类的序列化/反序列化方式.
template<typename T>
struct XML_traits
{
typedef XML_Empty Children;
};
template<>
struct XML_traits<Car>
{
typedef boost::mpl::vector<Body,Wheels,Engine> Children;
};
template<typename T>
std::ostream& Serialize(T const&)
{
// my template foo is not that strong.
// but somthing like this.
boost::mpl::for_each<typename XML_Traits<T>::Children,Serialize>(data);
}
template<>
std::ostream& Serialize<XML_Empty>(T const&)
{ /* Do Nothing */ }
Run Code Online (Sandbox Code Playgroud)
有没有人看到任何项目/ decumentation(不仅仅是XML)使用这样的技术(模板元编程)来模拟在Java和C#等语言中使用的注释概念,然后可以在代码生成中使用(以有效地自动化)使用声明式的任务).
在我的研究的这一点上,我正在寻找更多的阅读材料和例子.
令我惊讶的是,以下代码编译:
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <cctype>
int main() {
std::string s="nawaz";
std::string S;
std::transform(s.begin(),s.end(), std::back_inserter(S), ::toupper);
std::cout << S ;
}
Run Code Online (Sandbox Code Playgroud)
我原以为它会失败,因为::toupper我认为它应该在std命名空间中.快速检查cctype显示它是,但它是从根namesescece导入(神秘解决那里).
namespace std
{
// Other similar `using` deleted for brevity.
using ::toupper;
}
Run Code Online (Sandbox Code Playgroud)
所以第一个问题解决了但是如果我也改变了transform()上面的那一行:
std::transform(s.begin(),s.end(), std::back_inserter(S), std::toupper);
Run Code Online (Sandbox Code Playgroud)
我现在希望现在也可以编译.但是我收到编译错误:
kk.cpp:12:错误:没有匹配函数来调用`transform(__ gnu_cxx :: __ normal_iterator <char*,std :: basic_string <char,std :: char_traits <char>,std :: allocator <char >>>, __gnu_cxx :: __ normal_iterator <char*,std :: basic_string <char,std :: cha r_traits <char>,std :: …
class X
{
public:
X() {};
X(int) : X() { throw std::exception(); }
X(double) { throw std::exception(); }
~X();
};
Run Code Online (Sandbox Code Playgroud)
动态记忆怎么样?通常,构造函数中的异常意味着对象未完全构造,因此内存是干净的并且不会丢失.
但是上一个问题中的论点是在委托完成后对象完全构造(或完全初始化).这对回收内存有何影响?我希望记忆仍然是清洁的!
int main()
{
new X(5); // new called
// delete called because delegate completed.
// I assume:
// Memory re-claimed (because constructor did not complete)
// I assume the C++11 standard adjusted to compensate.
// As a constructor did complete.
}
Run Code Online (Sandbox Code Playgroud)
比较也是:
int main()
{
new X(5.0); // new called
// Delete **NOT** called …Run Code Online (Sandbox Code Playgroud) 我的印象是阵列是不可复制的(或可分配的).
int x[5] = {1,2,3,4,5};
int y[5] = {6,7,8,9,0};
x = y; // Fails to compile
Run Code Online (Sandbox Code Playgroud)
但是当我在一个类中放入一个数组时,复制构造函数和赋值运算符工作(我会按预期说,但它不是我所期望的).
#include <iostream>
struct X
{
virtual ~X(){} // Just in case it was something to do with POD
// make sure its not a POD
int x[5];
};
int main()
{
X a;
a.x[0] = 0;
a.x[1] = 1;
a.x[2] = 2;
a.x[3] = 3;
a.x[4] = 4;
// Make a copy of a and test it
X b(a);
std::cout << a.x[0] << …Run Code Online (Sandbox Code Playgroud) c++ ×7
amazon-ec2 ×1
arrays ×1
c++11 ×1
case ×1
constants ×1
cout ×1
declarative ×1
enums ×1
java ×1
logout ×1
namespaces ×1
openid ×1
php ×1
std ×1
web-services ×1
xml ×1