﻿# V801\. Decreased performance\. It is better to redefine the N function argument as a reference\. Consider replacing 'const T' with 'const \.\. &T' / 'const \.\. \*T'\.

The analyzer detected a construct that can be optimized\. An object of type class or structure is passed to a function\. This object is passed by value but is not modified because there is the key word const\. Perhaps you should pass this object using a constant reference in the C\+\+ language or a pointer in the C language\.

For example:

```cpp
bool IsA(const std::string s)
{
  return s == A;
}
```

When calling this function, the copy constructor will be called for the std::string class\. If objects are often copied this way, this may significantly reduce the application's performance\. You may easily optimize the code by adding the reference:

```cpp
bool IsA(const std::string &s)
{
  return s == A;
}
```

The analyzer doesn't output the message if it is a plain old data \(POD\) structure whose size is not larger than that of the size of pointer\. Passing such a structure by reference won't give any performance gain\.

**References:**

1. Wikipedia\. [Reference \(C\+\+\)\.](https://en.wikipedia.org/wiki/Reference_(C%2B%2B))
1. Bjarne Stroustrup\. The C\+\+ Programming Language \(Third Edition and Special Edition\)\.  11\.6 \- Large Objects\.