﻿# V2011\. Consider inspecting signed and unsigned function arguments\. See NN argument of function 'Foo' in derived class and base class\.

Данное диагностическое правило добавлено по просьбе пользователей\.

Диагностика выявляет следующую ситуацию\. В базовом классе имеется виртуальная функция, в которой один из параметров имеет знаковый тип\. В наследнике есть точно такая\-же функция, но этот параметр является беззнаковым\. Или ситуация противоположная: в базовом классе беззнаковый тип, в наследнике \- знаковый\.

Эта диагностика помогает выявить ошибки, когда при большом факторинге меняют тип функции в одном из классов, но забывают изменить эту функцию в другом классе\.

Рассмотрим пример:

```cpp
struct Q            { virtual int x(unsigned) { return 1; } };
struct W : public Q {         int x(int)      { return 2; } };
```

На самом деле, код должен быть таким:

```cpp
struct Q            { virtual int x(unsigned) { return 1; } };
struct W : public Q {         int x(unsigned) { return 2; } };
```

Если в базовом классе будет две функции 'x' с аргументами 'int' и "unsigned', то анализатор предупреждение V2011 выдавать не будет\.