Answer & Solution
Answer: Option C
Solution:
In C++, the access specifier that allows constructors to be called only from member functions of the same class and its derived classes is
private
. When a constructor is declared as
private
, it cannot be accessed from outside the class, limiting its invocation to member functions of the same class and its derived classes.
Option A:
protected
allows access to member functions and data members from within the same class, derived classes, and friend classes, but it still allows derived classes to call constructors, which might not be desired in some cases.
Option B:
public
allows unrestricted access to the constructor from anywhere, defeating the purpose of restricting its usage to only member functions of the same class and its derived classes.
Option D:
friend
allows non-member functions or external classes to access private and protected members of a class, but it doesn't restrict the calling of constructors to member functions of the same class and its derived classes.
Therefore, the correct answer is Option C:
private.