Как я могу проверить в JAVA, если строка не равна? [закрыто]

Что заставляет вас думать, что это не ? Попробуйте [Изменить: изменение кода для использования частной копии ctor, так как доступность должна быть проверена, даже если использует копии ctor.]:

class MyClass
{
public:
   ~MyClass() {}
   MyClass():x(0), y(0){} //default constructor
   MyClass(int X, int Y):x(X), y(Y){} //user-defined constructor

private:
   MyClass(const MyClass& tempObj):x(tempObj.x), y(tempObj.y){} //copy constructor
   int x; int y;
};

int main()
{
    MyClass MyObj(MyClass(1, 2)); //User-defined constructor was called.
    MyClass MyObj2(MyObj); //Copy constructor was called.
}

Попытка скомпилировать это дает ошибки для обеих строк в main:

myclass.cpp(17) : error C2248: 'MyClass::MyClass' : cannot access private member
 declared in class 'MyClass'
        myclass.cpp(11) : see declaration of 'MyClass::MyClass'
        myclass.cpp(4) : see declaration of 'MyClass'
myclass.cpp(18) : error C2248: 'MyClass::MyClass' : cannot access private member
 declared in class 'MyClass'
        myclass.cpp(11) : see declaration of 'MyClass::MyClass'
        myclass.cpp(4) : see declaration of 'MyClass'

По идее, копия ctor используется в обоих случаях, и компилятор обязан проверить, что он доступен. Однако в первом случае компилятор может полностью исключить фактическое использование копии ctor, если сможет использовать .

-10
задан Blobonat 21 August 2016 в 08:59
поделиться