我一直听到人们抱怨C++没有垃圾收集.我还听说C++标准委员会正在考虑将其添加到该语言中.我担心我只是没有看到它的意义...使用智能指针的RAII消除了它的需要,对吧?
我对垃圾收集的唯一经验是在几台便宜的80年代家用电脑上,这意味着系统每隔一段时间就会冻结几秒钟.我确信它从那时起已有所改善,但正如你可以猜到的那样,这并没有让我对此持高度评价.
垃圾收集为经验丰富的C++开发人员提供了哪些优势?
正如我们许多人所知道的那样(许多人,更多人不知道),C++目前正在进行下一次国际标准修订的最终起草工作,预计将在大约2年内发布.草案和论文目前可从委员会网站获得.正在添加各种新功能,最大的概念和lambda.维基百科有一篇非常全面的文章,其中包含许多新功能.GCC 4.3及更高版本实现了一些C++ 0x功能.
就新功能而言,我非常喜欢类型特征(以及适当的概念),但我的确定领导者是可变参数模板.直到0x,长模板列表通常涉及Boost预处理器,并且编写起来非常不愉快.这使得事情变得更加容易,并且允许使用可变参数模板将C++ 0x模板视为功能完备的语言.我已经用它们编写了一些非常酷的代码,我迫不及待地经常使用它们!
那么您最热切期待的功能是什么?
我是编程新手,虽然我已经教自己Python大约一年了,我不久前学过C#.
这个月我在我的大学开始了C++编程课程,我只想问; "为什么C++代码如此复杂?"
写"你好世界".在Python中就像"打印'Hello world.'"一样简单,但在C++中它是:
# include <iostream>
using namespace std;
int main ()
{
    cout << "Hello world.";
    return 0;
}
我知道这可能是一个很好的理由但是,为什么......
这可能是因为我正在学习这样的基本C++,但到目前为止我所做的每个程序都是这样的,所以我必须一遍又一遍地重新输入相同的代码.这不是多余的吗?编译器本身无法输入此代码,因为它总是相同的(即afaik总是包含<iostream>,std,int main,return 0)
我记得在某处读到使用对智能指针的引用会导致内存损坏.这只是因为智能指针被销毁后使用了它的引用?或者引用计数搞砸了?
谢谢你的澄清
我需要在C中实现拼写检查.基本上,我需要所有标准操作......我需要能够拼写检查一个文本块,提出单词建议并动态地向索引添加新单词.
我有点喜欢自己写这个,所以我真的不知道从哪里开始.
假设我有以下snipplet:
Foo foo;
....
return bar();
现在,C++标准是否保证在foo :: ~Foo()之前调用bar()?或者这是编译器/实现的选择?
谢谢!
我试图在EBNF中写一个语法(除非有一个很好的理由,它必须是EBNF)并且我正在为它寻找一些实用程序 - 如果有一个可以制作一个的GUI界面,那将会很棒,但是我最需要的东西是可以检查语法的东西,例如看它是否是LALR(n),如果是,那么n的值是什么.这样的工具存在吗?有没有其他有用的语法编写工具我应该知道(我不是在寻找解析器生成器).
我有一个自定义类,它具有坐标的实例变量:
CLLocationCoordinate2D eventLocation;
@property(nonatomic) CLLocationCoordinate2D eventLocation;
我正在解析一个xml文件,该文件有一个可选字段,可能存在也可能不存在.如果它是我这样设置:
CLLocationCoordinate2D location;
NSArray *coordinateArray = [paramValue componentsSeparatedByString:@","];
if ([coordinateArray count] >= 2) {
    location.latitude = [[coordinateArray objectAtIndex:0] doubleValue];
    location.longitude = [[coordinateArray objectAtIndex:1] doubleValue];
} else {
    NSLog(@"Coordinate problem");
}
info.eventLocation = location;
我这样做基本上是在地图上添加注释
annotation.coordinate = alert.info.eventLocation;
我知道我需要在这里做一些检查,以确保存在,但我不允许做if (info.eventLocation == nil)或甚至  if (info.eventLocation.latitude == nil) 
这似乎是一个非常基本的问题,但我已经做了一些搜索,没有人能够真正提供一个好的答案/想法.我的建筑完全关闭了吗?
HTTP 501错误是否适合服务器计划支持的功能,但目前不支持,例如API的特定情况?例如,如果我正在设计一个网络邮件应用程序并且我还无法删除带有附件的电子邮件,那么如果我在带有附件的电子邮件上收到DELETE请求,是否适合给予501?
RFC表示它应该用于未知方法(例如PARTY请求),但不清楚它是否应该用于其他功能.
我刚开始使用rapidXML,因为它被推荐给我.现在迭代多个兄弟姐妹我这样做:
//get the first texture node    
xml_node<>* texNode = rootNode->first_node("Texture");
if(texNode != 0){
    string test = texNode->first_attribute("path")->value();
    cout << test << endl;
}
//get all its siblings
while(texNode->next_sibling() != 0){
    string test = texNode->first_attribute("path")->value();
    cout << test << endl;
    texNode = texNode->next_sibling();
}
作为基本测试,它工作正常.无论如何,我遇到了node_iterator,这对我来说似乎是一个额外的迭代器类.无论如何,我找不到任何关于如何使用它的例子,所以我想知道是否有人可以告诉我:)
谢谢!