相关疑难解决方法(0)

如何将对象传递给C++中的函数?

我是C++编程的新手,但我有Java经验.我需要有关如何将对象传递给C++中的函数的指导.

我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对象引用的变量.

如果您还可以解释在哪里使用这些选项,那将会很棒.

c++ pointers c++-faq pass-by-reference pass-by-value

245
推荐指数
4
解决办法
13万
查看次数

C++中的常量和编译器优化

我已经阅读了关于C++中const-correctness的所有建议,并且它(部分)很重要,因为它有助于编译器优化代码.我从未见过的是关于编译器如何使用这些信息来优化代码的一个很好的解释,甚至连好书都没有解释幕后发生的事情.

例如,编译器如何优化声明为const的方法与不应该但应该是的方法.当你引入可变变量时会发生什么?它们会影响const方法的这些优化吗?

c++ compiler-construction optimization

49
推荐指数
4
解决办法
2万
查看次数

传递基本数据类型的值或引用是否更好?

可能的重复:
如何将对象传递给C++中的函数?
是否有任何特定的情况,其中pass-by-value比C++中的pass-by-const-reference更受欢迎?

我有一个像这样实现的类的成员:

void aaa(int a, float b, short c)
{
  bbb(a, b);
}

void bbb(int a, float b)
{}
Run Code Online (Sandbox Code Playgroud)

如果a,b和c的值作为常量存储在我的类中,那么使用我的函数如下所示或如上所示更好/更明智吗?

void aaa(int& a, float& b, short& c)
void bbb(int& a, float& b)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用引用是否提供任何速度优势或优势?这里引用的任何缺点/开销?

c++ performance reference

10
推荐指数
3
解决办法
7860
查看次数

谷歌关于输入/输出参数的样式指南作为指针

谷歌C++样式指南绘制有明显的区别(严格接着cpplint.py输入参数之间)(→常量REF,值)和输入-输出或输出参数(→非const的指针):

C/C++函数的参数既可以是函数的输入,也可以是函数的输出,或者两者兼而有之.输入参数通常是值或const引用,而输出和输入/输出参数将是非常量指针.

并进一步 :

事实上,在Google代码中,一个非常强大的约定是输出参数是值或const引用,而输出参数是指针.

但我无法弄清楚为什么不应该通过引用传递输入/输出参数(我将输出参数放在一边).在stackoverflow上有很多与这个问题相关的主题:例如,在这里,接受的答案清楚地说明了这一点

它主要是关于风格

但是如果

如果您希望能够传递null,则必须使用指针

那么,如果我想避免指针为空,总是需要一个指针是什么意思?为什么只使用输入参数的引用?

c++ parameters reference google-style-guide cpplint

10
推荐指数
2
解决办法
1万
查看次数

为什么要在C ++中放入const(...)&

我想知道-为什么const (...)&在C ++中引入一个好主意?我在一些课程教程中找到了此代码。我了解到,const在将某些东西&传递给函数的同时,它使它们保持不变,并且无法更改。为什么两者都做?如果我无法更改某些内容,为什么还要将其传递给函数?

这是一个例子:

class CVector {
      public:
        int x,y;
        CVector () {};
        CVector (int a,int b) : x(a), y(b) {}
        CVector operator + (const CVector&);
    };

    CVector CVector::operator+ (const CVector& param) { //example 
      CVector temp;
      temp.x = x + param.x;
      temp.y = y + param.y;
      return temp;
    }
Run Code Online (Sandbox Code Playgroud)

c++ class

6
推荐指数
1
解决办法
6827
查看次数

为什么在函数参数中将字符串作为const字符串传递

我对我教科书中的一个例子感到有点困惑.创建字符串时,会将其创建为类型字符串.但是,当相同的字符串传递给函数时,函数参数是const字符串而不是字符串.

这是代码的一部分:

int main()
{
string str;
cout << "blah blah..";
getline(cin, str);
if (is_pal(str))

.
.
.
}
bool is_pal(const string& s)
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

为什么函数参数const string&s而不仅仅是string&s?我翻过教科书,但似乎无法找到任何解释= /谢谢.

c++ string

5
推荐指数
1
解决办法
3663
查看次数