Совпадение имен

77
30 марта 2022, 10:50

Подскажите, пожалуйста, что Стандарт говорит про следующую ситуацию:

class Object
{
    public:
    Object(const bool member) : member{member}
    {}
    private:
    bool member;
};

Если имя параметра совпадает с именем члена, способен ли компилятор разрешить эту ситуацию? Есть ли гарантии этого?

Судя по поведению Visual Studio, компилятор данную ситуацию разрешает. Но всегда ли так было?

Answer 1

https://stackoverflow.com/questions/34061864/priority-between-local-variable-and-class-attribute-in-case-of-name-conflict/34062111

3.3.7 Class scope 4) A name declared within a member function hides a declaration of the same name whose scope extends to or past the end of the member function’s class.

Перевод :

Имя, объявленное в функции-члене, скрывает объявление с тем же именем, область которого распространяется до или после конца класса функции-члена.

Проверка :

// g++ -Wall -std=c++11 -Wextra -Wpedantic initclassmem.cpp  -o initclassmem
# include <iostream>
class Object
{
    public:
    Object(const bool member) : member{!member},member2{!member2},member3{this->member}
    {}
    void print(){
      std::cout<<"["<<member<<","<<member2<<","<<member3<<"]";    }
    private:
    bool member;
    bool member2  ;
    bool member3  ;
};
Object  o2 {true};
Object  o {false};
int main() {
  std::cout<<"o=";
  o.print();
  std::cout<<std::endl;
  std::cout<<"o2=";
  o2.print();
  std::cout<<std::endl; 
}

Результат :

> ./initclassmem 
o=[1,1,1]
o2=[0,1,0]

Первый элемент инициализируется аргументом, второй самим собой, третий с явным указанием переменной класса.

READ ALSO
Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

В попытках поставить драйвер, перерыл пол-интернетаВ качестве БД использую MySql, но обертка поверх нее XAMPP

69
Условие не видит Ajax результат

Условие не видит Ajax результат

Отправляю определенный пост запрос на сервер и исходя из отправленных данных получаю ответ от сервера Success либо Updated

175
Сортировка MYSQL Order BY с условием

Сортировка MYSQL Order BY с условием

Прошу помочь, как я могу реализовать ORDER BY с условием IF elseесли это возможно! Вот такое нужно преобразовать в нужный синтаксис, если mysql позволяет:

126
Как сделать запрос не занятых ячеек?

Как сделать запрос не занятых ячеек?

Есть две таблицы которые связаны по id, как выбрать те записи которые еще не связаны с таблицейМне нужно получить третью запись потому что...

74