Можете ли вы помочь мне там определение в стандарте C++, который описывает, который один будет называться конструктор или оператор присваивания в этом случае:Конструктор или Оператор присваивания
#include <iostream>
using namespace std;
class CTest
{
public:
CTest() : m_nTest(0)
{
cout << "Default constructor" << endl;
}
CTest(int a) : m_nTest(a)
{
cout << "Int constructor" << endl;
}
CTest(const CTest& obj)
{
m_nTest = obj.m_nTest;
cout << "Copy constructor" << endl;
}
CTest& operator=(int rhs)
{
m_nTest = rhs;
cout << "Assignment" << endl;
return *this;
}
protected:
int m_nTest;
};
int _tmain(int argc, _TCHAR* argv[])
{
CTest b = 5;
return 0;
}
Или это просто вопрос оптимизации компиляторов?
Может ли быть какая-либо разница между «CTest b (5)» и «CTest b = 5» в зависимости от компилятора? –
Нет, первый синтаксис - это общий синтаксис C++ для создания экземпляра класса и предоставления аргументов конструктору. Второй синтаксис - это просто альтернативная формулировка, которую вы можете использовать, если конструктор принимает ровно один аргумент. Он существует, поэтому код C будет компилироваться без изменений. – eemz
@joefis, почему вы даете вам ответ так же, как комментарий? Можете ли вы дать несколько доказательств того, что вы сказали? –