A logical error is an error that violates a class invariant or a logical precondition. Logic errors are typically detected at compile time and typically throw a derivative of std::logic_error exception. By contrast, runtime exceptions throw a derivative of std::runtime_error. Both classes can be found in <stdexcept>.
The built-in std::logic_error types are: domain_error, invalid_argument, length_error, out_of_range and future_error.
Some C programs can be compiled in C++, yes.
Logic errors in any computer language may be difficult to find. Languages that are object oriented can make it harder because you have to follow the object activations, which are separate from plain structural code. However, it isn't any more difficult in C++ than some other OO languages to find logic errors; in all cases it can be difficult.
Yes.
Writing programs in it.
There is no such thing. Logic is bitwise operation, not a data type.
Writing computer-programs in it.
C++ programs won't compile if they contain compiler errors. The compiler will tell you precisely where the error is, and the type of error, unless the error is in a macro. The compiler cannot see macro definitions because they are inline expanded prior to compilation.
The best programs are written by humans, not by softwares.
Yes.
C++ compiler, obviously, a C compiler won't do.
Human activity that ends in producing C++ programs.
Any thing and everything. As many as needed.