effective-c++相关内容
int main(const int argc, const char[] const argv) Effective C++ Item#3 声明“尽可能使用 const",我开始思考“为什么不让这些‘常量’参数const"?. 有没有在程序中修改argc的值的场景? 解决方案 在这种情况下,历史是一个因素.C 将这些输入定义为“非常量",并且与(大部分)现有 C 代码的兼容性是
..
在这一章中,Scott Meyer 提到了一些避免头文件依赖的技术.如果更改仅限于其他包含的头文件,主要目标是避免重新编译 cpp 文件. 我的问题是: 在我过去的项目中,我从未关注过这条规则.编译时间不短但也不是不能忍受.这可能与我的项目的规模(或缺乏)有关.鉴于编译器技术(例如 clang)的进步,今天这个技巧有多实用? 在哪里可以找到更多使用此技术的示例?(例如 Gnome
..
我正在阅读Scott Meyers的《有效的现代C ++》.项1包含以下示例: template void f(T& param); // param is a reference int x = 27; // x is an int const int cx = x; // cx is a const int f(cx
..
我已经看到人们使用两种方法来声明和定义char *. 方法1:头文件具有以下内容 extern const char* COUNTRY_NAME_USA = "USA"; 第2种方法: 头文件具有以下声明: extern const char* COUNTRY_NAME_USA; cpp文件具有以下定义: extern const char* COUNTRY_NA
..
众所周知,从C ++中的函数返回局部变量是不安全的,由于范围。 在Effective C ++ Third Edition中,Scott Meyers在第21页第101页讲述了这个问题。但是,他总结说,正确的决定是写: inline const Rational运算符*(const Rational& lhs,const Rational& rhs){ return Rational(
..
在本章中,Scott Meyer提到了一些避免头文件依赖的技术。 我的问题是: $ b b 在我以前的项目中,我从来没有注意到这个规则。编译时间不短,但不是不能容忍。它可能与我的项目的规模(或缺乏)有关。 在哪里可以找到更多使用这种技术的例子? (例如Gnome或其他OSS项目) 我使用的是第二版。 解决方案 我不认为编译器技术有进步。 clang不是一些魔法
..
我理解更有效的C ++是有效C ++的扩展,而有效的现代C ++专注于C ++ 11& 14.作为一个新手的语言,刚刚从这些书开始,我应该读取有效现代后前两个?此外,有效的STL应该在哪里适合? 阅读上述书籍的首选顺序是什么,因为每本书都建立在以前书籍的内容上? 此外,有效现代C ++认为一个非官方的下一版的有效C ++? 解决方案 这个问题的答案可以从图书等中搜集。总结页面在
..
我正在阅读Scott Meyers的 Effective C ++ (第三版),并在项目32中的一段中:确保公共继承是“is-a” 151他发表了评论(我用粗体表示): 这只适用于 public 遗产。 C ++将表现为我已经描述,只有当学生是公开派生自人。私人继承意味着完全不同的东西(见第39条),和受保护的继承是我今天的意义。 问题:我应该如何解读此评论? (我读过这个问题
..
根据我在这篇文章中看到的内容,我决定开始阅读此书有效的C ++ 。 但现在有很多新的功能,因为C ++ 11和一些好的做法改变,我不知道它是否是一个好主意。 C ++ 11的出现是否废弃了Effective C ++中包含的任何建议? 解决方案 这是Scott Meyers自己不得不说的话在自己的博客 这可能会让你想知道 中的信息和建议是否有效C ++的C ++ 0x版本仍然
..
我已经开始阅读Effective C ++,在第2项中的某一点,提到以下内容: // call f具有最大值a和b #define CALL_WITH_MAX(a,b)f((a)>(b)?(a):(b)) ... int a = 5,b = 0; CALL_WITH_MAX(++ a,b); // a增量两次 CALL_WITH_MAX(++ a,b + 10);
..
Scott Meyers的有效C ++ 在第5章第28项中说明了避免返回“handle”(指针,引用或迭代器)到对象内部,它绝对是一个好点。 不要这样做: class Family { public: Mother& GetMother()const; } 因为它破坏了封装并允许更改私有对象成员。 不要这样做: class Family
..
在有效C ++(第三版)中,Scott Meyers在第31项中建议,类在经典的声明(.h)和定义(.cpp)文件之上应该有一个向前声明包含文件(fwd。 h),这个类不需要完整的定义可以使用,而不是向前声明自己。 我有点看到它的情况,但我真的不看到这是一个可行的选择...它似乎很难维护,而不是过度,而且几乎不必要。 然而,我可以看到它的用途模板转发声明,它们相当重。但是对于简单的类?
..
int main(const int argc,const char [] const argv) 由于 Effective C ++ 项目#3说明“尽可能使用const”,我开始思考“为什么不会使这些“常量”参数 const “?。 解决方案 在这种情况下,历史记录是一个因子。 C将这些输入定义为“非常量”,并且与现有C代码的(很大一部分)的兼容性是C +
..
虽然对类设计的一些事实感到困惑,特别是函数是否应该是成员,我研究了Effective c ++,发现了Item 23,即将非成员非朋友函数优先于成员函数。首先用Web浏览器示例读取一些意义,但是在该示例中方便的函数(在这本书中命名为非成员函数)改变了类的状态,不是吗? 再仔细看一下,他认为STL函数和某些类没有实现的某些函数在stl中实现。根据这本书的想法,他们演变成一些方便的函数,它们包装在一些
..