我注意到我通常使用常量引用作为返回值或参数。 我认为这是因为它和在代码中使用非引用几乎一样。 但是它肯定需要更多的空间,函数声明变得更长。 我可以用这样的代码,但我认为有些人认为这是一种糟糕的编程风格。 你怎么看? 是否值得写const int& over int ? 我认为它已经被编译器优化了,所以也许我只是在浪费我的时间来编码它。
为什么需要有std::reference_wrapper ? 应该在哪里使用? 它与简单的指针有何不同? 它的性能如何比较简单的指针?
所以,我意识到const T&和T const&是相同的,都是指const T的引用。在这两种情况下,引用也是常量(引用不能像指针那样被重新赋值)。 我观察到,在我有限的经验中,大多数C ++程序员使用const T& ,但是我遇到了一些使用T const& 。 我使用const T&只是因为我是这样学习的,所以T const&对我来说看起来有点儿滑稽。 您使用您使用的变体的原因是什么? 你们中的任何一个人是否在编码标准要求使用一种变体的组织中工作? 编辑 根据这些答案,看起来两者之间select的一个原因是你想要像编译器(从右到左)还是像英语(从左到右)那样阅读它。 如果像编译器那样读取它,那么“T const&”读作“&(引用)const(对于常量)T(typesT)”。 如果从左到右读一个英文的话,那么“const T&”被读作“一个引用forms的T类常量对象”。 我喜欢像英文散文一样阅读它,但我当然可以看到编译器的解释方式。 没有人回答这个组织或者编码标准问题,但是我强烈怀疑大多数组织并没有强制要求,尽pipe他们可能会争取一致。
我正在使用VS2010,我试图通过文件引用从本地硬盘添加一些程序集到我的C#项目。 csproj文件,我发现有时文件引用显示为 <Reference Include="name"> 不过有时候看起来像 <Reference Include="name, Version=xxx, Culture=neutral, processorArchitecture=MSIL"> 什么可能导致差异? 受k3b的回答启发,我做了另一个testing。 我创build了一个新的类库项目。 添加文件参考。 “ 特性”窗格中的“ 特定版本 ”的初始值为False 。 csproj文件看起来像 <Reference Include="Name"> <HintPath>…</HintPath> </Reference> 将属性窗格中的特定版本更改为True 。 VS在Include属性中添加版本。 <Reference Include="Name, Version=…"> <HintPath>…</HintPath> </Reference> 将属性窗格中的特定版本更改为False 。 VS添加一个子元素SpecificVersion 。 <Reference Include="Name, Version=…"> <HintPath>…</HintPath> <SpecificVersion>False</SpecificVersion> </Reference> 所以看来这个规则是: 当包含属性中存在版本并且没有SpecificVersion子元素时,文件程序集configuration为特定版本 SpecificVersion子元素只附加值False 。 有一件事我还是不明白: 对于我的新testing项目,如果删除文件引用并将其重新添加回去,则会返回到缺省值为1的格式。 对于我现有的项目,如果我删除了文件引用并将其重新添加回来,我将回到第3点的格式。虽然这也意味着不使用特定版本,但我想知道为什么它不回到格式的第1点。
这些是一样的: int foo(bar* p) { return p->someInt(); } 和 int foo(bar& r) { return r.someInt(); } 忽略空指针的潜力。 无论someInt()是虚拟的还是通过一个bar或bar的子类,这两个函数在function上是否相同? 这是否切片什么: bar& ref = *ptr_to_bar;
在get_instance() , get_instance()是一个全局可用的函数,它返回包含所有当前加载的类(它返回Controller类实例)的Controller超级对象。 我将包括当前的源代码: get_instance()在get_instance()中定义 // Load the base controller class require BASEPATH.'core/Controller.php'; function &get_instance() { return CI_Controller::get_instance(); } 而CI_Controller在Controller.php定义 class CI_Controller { private static $instance; /** * Constructor */ public function __construct() { self::$instance =& $this; // Assign all the class objects that were instantiated by the // bootstrap file (CodeIgniter.php) to local class […]
当我在Visual Studio 8中向项目添加一个程序集引用时,该引用的Aliases属性被设置为“global”。 什么是这个属性的好处,为什么它设置为全球? MSDN告诉我,这是程序集的别名列表,但不是为什么我可能想要使用这个属性,或者为什么大多数被别名为“全局”。 MSDN参考
他们呢? 或者加快我的程序,我应该通过参考通过他们?
要么我错过了一些反弹或反弹似乎并没有太多的程序员引用循环工作。 $ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\“" hello1-hello2-hello3-echo hello4 通缉 hello1-hello2-hello3-hello4-hello5-hello6-…
过去几年来我一直在使用数据库,我想我认为我已经很熟练地使用它们了。 不过,我最近阅读的是关于Joel的泄漏抽象定律,我意识到尽pipe我可以编写一个查询来获取我想从数据库中得到的任何东西,但我不知道数据库是如何解释查询的。 有没有人知道任何好的文章或书籍,解释数据库如何在内部工作? 我感兴趣的一些具体的事情是: 数据库实际上做了什么来找出与select语句匹配的内容? 一个数据库如何将一个连接解释为一个带有多个“where key1 = key2”语句的查询? 数据库如何存储所有内存? 索引如何存储?