== оператор всегда ссылается на ссылку. Но в случае
метод equals ()
blockquote>это зависит от реализации, если мы переопределены равным методу, чем сравниваем объект с базой реализации, указанной в переопределенном метод.
class A { int id; String str; public A(int id,String str) { this.id=id; this.str=str; } public static void main(String arg[]) { A obj=new A(101,"sam"); A obj1=new A(101,"sam"); obj.equals(obj1)//fasle obj==obj1 // fasle } }
в приведенном выше коде оба объекта obj и obj1 содержат одни и те же данные, но ссылка не такая же, как и return false и ==. но если мы переопределили метод equals, чем
class A { int id; String str; public A(int id,String str) { this.id=id; this.str=str; } public boolean equals(Object obj) { A a1=(A)obj; return this.id==a1.id; } public static void main(String arg[]) { A obj=new A(101,"sam"); A obj1=new A(101,"sam"); obj.equals(obj1)//true obj==obj1 // fasle } }
, узнайте, что он вернет true и false для одного и того же случая, только мы переопределили
equals method.
< / blockquote>сравнивает объект с базой содержимого (id) объекта
, но ==
blockquote>все еще сравнивает ссылки объекта.
Нашел решение, которое сработало для меня:
# add the pch custom target as a dependency
add_dependencies(corelib pch)
# add the flag
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include-pch ${CMAKE_CURRENT_BINARY_DIR}/stdinc.hpp.pch")
# target
add_custom_target(pch COMMAND clang -x c++-header ${CMAKE_CURRENT_SOURCE_DIR}/src/stdinc.hpp -o ${CMAKE_CURRENT_BINARY_DIR}/stdinc.hpp.pch)