首页 > TAG信息列表 > c-faq

哪个C成语在C 11中被弃用?

有了新的标准,就会有新的做事方式,而且许多方式比旧的方式更好,但旧的方式仍然很好.同样明显的是,由于向后兼容的原因,新标准没有正式弃用.所以剩下的问题是: 旧的编码方式肯定不如C 11风格,我们现在可以做些什么呢? 在回答这个问题时,你可以跳过诸如“使用自动变量”之类的显而易见

c – 使用RAII从C风格的API管理资源

Resource Acquisition is Initialization(RAII)通常用于管理资源的生命周期,这些资源在生命周期结束时需要某种方式的清理代码,从删除新指针到释放文件句柄. 如何快速轻松地使用RAII来管理从C风格API获取的资源的生命周期? 在我的情况下,我想使用RAII从C风格的API中自动执行清理函数

c – 应用于变量名称时*和&的含义是什么?

在C中,有什么区别: void func(MyType&); // declaration //... MyType * ptr; func(*ptr); // compiler doesnt give error func(ptr); // compiler gives error i thought & represents memory address so // this statement should correct as ptr i

为什么一个简单的“Hello World”风格的程序不能用Turbo C编译?

我已经开始为我的编程课学习C语言了.我已经下载了这个“Hello World”程序: #include <iostream> using namespace std; int main() { cout << "Hello, World!"; return 0; } 但是Turbo C抱怨道: Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM'

返回C引用变量的做法是邪恶吗?

我觉得这有点主观;我不确定这个意见是否会一致(我已经看过很多代码片段,其中返回了引用). 根据对this question I just asked, regarding initializing references的评论,返回引用可能是邪恶的,因为[据我所知]它更容易错过删除它,这可能导致内存泄漏. 这让我很担心,因为我跟随了一

c – cout << a << a ;?的正确答案是什么?

最近在一次采访中有一个以下客观类型的问题. int a = 0; cout << a++ << a; 回答: 一个. 10 湾01C.未定义的行为 我回答了选择b,即输出为“01”. 但令我惊讶的是,一位采访者告诉我,正确的答案是选项c:undefined. 现在,我确实知道C中序列点的概念.以下语句的行为未定义: int i = 0;

C中的多态性

据我所知: C提供三种不同类型的多态性. >虚拟功能 >函数名称重载>运算符重载 除了上述三种类型的多态性外,还存在其他种类的多态性: >运行时>编译时> ad-hoc多态性>参数多态性 我知道运行时多态性可以通过虚函数来实现静态多态性可以通过模板函数实现 但对于另外两个 > ad-hoc多态性>

c – 什么是外部联系和内部联系?

我想了解外部联系和内部联系及其区别. 我也想知道的意思 const variables internally link by default unless otherwise declared as extern. 解决方法:编写实现文件(.cpp,.cxx等)时,编译器会生成一个转换单元.这是您的实现文件中的目标文件以及其中包含的所有标题. 内部链接仅

我应该在C中使用什么XML解析器?

我有需要解析的XML文档和/或我需要构建XML文档并将它们写入文本(文件或内存).由于C标准库没有此库,我应该使用什么? 注意:这是一个确定的,C -FAQ风格的问题.所以,是的,它与其他人重复.我不是简单地适应其他问题,因为他们倾向于要求更具体的东西.这个问题更通用.解决方法:就像标准库容

c – 指向类数据成员“:: *”的指针

我遇到了这个编译好的奇怪的代码片段: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } 为什么C有一个指向类的非静态数据成员的指针?在实际代码中这个奇怪的指针有什么用?解决方法:它是“指向成员的指针” – 以下

c – 私有,公共和受保护继承之间的区别

C中的public,private和protected继承有什么区别?我在SO上发现的所有问题都涉及具体案例.解决方法:要回答这个问题,我想先用自己的话来描述成员的访问者.如果您已经知道这一点,请跳至标题“next:”. 我知道有三种访问者:公共,受保护和私有. 让: class Base { public: int p

c – 显式关键字是什么意思?

显式关键字在C中的含义是什么?解决方法:允许编译器进行一次隐式转换以将参数解析为函数.这意味着编译器可以使用可用单个参数调用的构造函数从一种类型转换为另一种类型,以便为参数获取正确的类型. 这是一个带有构造函数的示例类,可用于隐式转换: class Foo { public: // single p

c – std :: wstring VS std :: string

我无法理解std :: string和std :: wstring之间的区别.我知道wstring支持Unicode字符等宽字符.我有以下问题: >我什么时候应该在std :: string上使用std :: wstring? > std :: string可以保存整个ASCII字符集,包括特殊字符吗?>所有流行的C编译器都支持std :: wstring吗?>什么是“广角”?

c – 在类的函数声明中’const’的含义是什么?

这些声明中const的含义是什么? const困惑我. class foobar { public: operator int () const; const char* foo() const; }; 解决方法:将const关键字添加到方法时,this指针实际上将成为指向const对象的指针,因此您无法更改任何成员数据. (除非你使用mutable,否则稍后

C中的POD类型是什么?

我有几次遇到这个术语POD型. 这是什么意思?解决方法:POD代表普通旧数据 – 即没有构造函数,析构函数和虚拟成员函数的类(无论是使用关键字struct还是关键字类定义). Wikipedia’s article on POD进入更多细节并将其定义为: A Plain Old Data Structure in C++ is an aggregate clas

c – 为什么在宏中使用明显无意义的do-while和if-else语句?

在许多C/C++宏中,我看到宏的代码包含在看似无意义的while循环中.这是一些例子. #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else 我无法看到他们在做什么.为什么不在没有它的情况下写这个? #define FOO(X) f(X); g(X) 解决方法:do …

C标准规定了int的大小,long类型是什么?

我正在寻找有关基本C类型大小的详细信息. 我知道这取决于架构(16位,32位,64位)和编译器. 但C有什么标准吗? 我在32位架构上使用Visual Studio 2008.这是我得到的: char : 1 byte short : 2 bytes int : 4 bytes long : 4 bytes float : 4 bytes double: 8 bytes 我试图在不同的

c – 类型名称后的括号是否与new有所不同?

如果’Test’是一个普通的类,那么之间有什么区别: Test* test = new Test; 和 Test* test = new Test(); 解决方法:让我们变得迂腐,因为存在实际上会影响代码行为的差异.以下大部分内容来自对“Old New Thing” article的评论. 有时新运算符返回的内存将被初始化,有时它不会取决

为什么C程序员应该尽量减少“新”的使用?

我偶然发现Stack Overflow问题Memory leak with std::string when using std::list<std::string>,one of the comments说: Stop using new so much. I can’t see any reason you used new anywhere you did. You can create objects by value in C++ and it’s one of the

c – 什么是复制和交换习语?

这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C 11时,习语会改变吗? 虽然在许多地方已经提到过,但我们没有任何单一的“它是什么”问题和答案,所以在这里.以下是前面提到的地方的部分列表: > What are your favorite C++ Coding Style idioms: Copy-swap > Copy construct

c – 由于类之间的循环依赖性而解决构建错误

我经常发现自己处于这样一种情况:我在C项目中面临多个编译/链接器错误,因为一些糟糕的设计决策(由其他人做出:))导致不同头文件中C类之间的循环依赖(也可能发生)在同一个文件中).但幸运的是(?)这种情况经常不足以让我在下次再次发生问题时记住这个问题的解决方案. 因此,为了便于将来

c – 什么是移动语义?

我刚刚听完关于C++0x的软件工程无线电podcast interview with Scott Meyers.大多数新功能对我来说都很有意义,我现在对C 0x感到兴奋,除了一个.我仍然没有得到移动语义……究竟是什么?解决方法:我发现用示例代码理解移动语义最容易.让我们从一个非常简单的字符串类开始,该类只保存指

c – 什么是智能指针,什么时候应该使用?

什么是智能指针,什么时候应该使用?解决方法:UPDATE 这个答案相当陈旧,因此描述了当时的“好”,这是Boost库提供的智能指针.从C 11开始,标准库提供了足够的智能指针类型,因此您应该支持使用std::unique_ptr,std::shared_ptr和std::weak_ptr. 还有std::auto_ptr.它非常像一个范围指针,