相关疑难解决方法(0)

参数和参数之间有什么区别?

当口头谈论方法时,我永远不确定是否使用单词参数参数或其他东西.无论哪种方式,其他人都知道我的意思,但是什么是正确的,这些条款的历史是什么?

我是一名C#程序员,但我也想知道人们是否使用不同语言的不同术语.

根据记录,我是自学成才,没有计算机科学的背景.(请不要告诉我阅读Code Complete,因为我问这个是为了其他没有史蒂夫麦康奈尔精彩书籍的人的利益.)

摘要

普遍的共识似乎是在团队环境中交替使用这些术语是可以的.除非您定义精确的术语; 那么你也可以使用" 形式参数/参数"和" 实际参数/参数"来消除歧义.

language-agnostic parameters arguments terminology

661
推荐指数
21
解决办法
22万
查看次数

什么是const引用比C++ 11中的pass-by-value更好?

我有一些pre-C++ 11代码,其中我使用const引用传递大量参数,如vector'很多.一个例子如下:

int hd(const vector<int>& a) {
   return a[0];
}
Run Code Online (Sandbox Code Playgroud)

我听说使用新的C++ 11功能,您可以vector按如下方式传递by值而不会出现性能命中.

int hd(vector<int> a) {
   return a[0];
}
Run Code Online (Sandbox Code Playgroud)

例如,这个答案

C++ 11的移动语义使得即使对于复杂对象,传递和返回值也更具吸引力.

上述两个选项在性能方面是否相同?

如果是这样,何时比选项2更好地使用const参考?(也就是为什么我们仍然需要在C++ 11中使用const引用).

我问的一个原因是const引用使模板参数的推导变得复杂,并且如果它与const引用性能相同,则仅使用pass-by-value会容易得多.

c++ c++11

57
推荐指数
4
解决办法
1万
查看次数

作为常量和参考传递 - 值得吗?

可能重复:
如何将对象传递给C++中的函数?

在我的游戏中,我过度使用了数学向量和运算符重载.

class Vector
{
   float x, y;
};
Run Code Online (Sandbox Code Playgroud)

这基本上都是关于我的Vector类(排除的方法).

我不是C++的专家,我已经看过并阅读过传递为const并通过引用传递.

那么,下面的代码示例中的性能差异在哪里?

Float RandomCalculation( Vector a, Vector b )
{
    return a.x * b.x / b.x - a.x * RANDOM_CONSTANT;
}

// versus..

Float RandomCalculation( Vector& a, Vector& b )
{
    return a.x * b.x / b.x - a.x * RANDOM_CONSTANT;
}

// versus..

Float RandomCalculation( const Vector& a, const Vector& b )
{
    return a.x * b.x / b.x - a.x * RANDOM_CONSTANT;
}
Run Code Online (Sandbox Code Playgroud)
  • 我应该使用三个中的哪一个,为什么?
  • 每个选项对编译器的优化过程有什么好处?

  • 我何时何地都要特别小心?

c++

36
推荐指数
3
解决办法
5万
查看次数

何时在函数args中使用const和const引用?

在编写一个带有传递给它的args的C++函数时,如果可以保证不改变对象,则应始终使用const,如果指针不会被更改,则应始终使用const指针.

这种做法何时建议?

你什么时候使用const引用,比仅通过指针传递它有什么好处?

那么void MyObject::Somefunc(const std::string& mystring) 如果一个字符串实际上已经是一个不可变对象,那么拥有一个const字符串会有什么意义呢?

c++ arguments const

22
推荐指数
2
解决办法
3万
查看次数