In C++ or Objective-C, is the term "constructor" exactly the same as "initializer"?

The reason is that, whenever I see the term "constructor", it feels somewhat vague, because it also feels like the constructor is responsible for setting up the object in the memory space, while in fact, constructors merely "initialize". So the term "constructor" can be confusing because it feels like it is alloc and init combined, while the term initializer is very clear that it is merely setting up values.

A constructor is guaranteed to run at allocation time and is used to initialize an object into some defined state. In C++, we call this RAII. An initializer is, as you said, merely "setting up values" or "initializing the object" and has no requirement to run at allocation time.

so when we say we write the constructor of a C++ class, we are merely writing "part 2" of the constructor's work (the initialization)? (part 1 was automatically done for you)
–
Jeremy LApr 23 '12 at 2:30

If it helps you to think of it that way, then yes. When you create an object of class foo or struct bar (structs are actually classes in C++), the constructor is automatically called.
–
San JacintoApr 23 '12 at 11:12

While you probably have a point that what's called a constructor could have been called an initializer instead, I doubt it was ever really considered for either C++ or Objective-C. "Initializer" already had its currently accepted meaning in C well before either C++ or Objective C came along. Since term was already well known in C, I can't imagine anybody trying to re-define it to mean something entirely different in a language based on C.