Constructors are not virtual in the sense that a derived class must define all the overloads they want for a constructor (nor can they have the virtual keyword). There is no such thing as "inheriting a base class constructor". However C# guarantees that for every derived class constructor a base class constructor will be called first. Normally this is the default constructor however you can use the base keyword to call a specific constructor from the base class. This constructor-chaining concept is prevalent throughout OO languages.
C# however says that all destructor's (actually finalizer's) are virtual so no keyword is needed and finalization happens appropriately depending on type.