▁classes ▁cannot ▁have ▁instance ▁variables ▁of ▁C ++ ▁classes ▁that ▁lack ▁a ▁default ▁constructor ▁or ▁that ▁have ▁one ▁or ▁more ▁virtual ▁methods , ▁but ▁pointers ▁to ▁C ++ ▁objects ▁can ▁be ▁used ▁as ▁instance ▁variables ▁without ▁restriction ▁( alloc ate ▁them ▁with ▁new ▁in ▁the ▁- init ▁method ). ▁ ▁C ++ ▁" by ▁value " ▁semantics ▁cannot ▁be ▁applied ▁to ▁Object ive - C ▁objects , ▁which ▁are ▁only ▁accessible ▁through ▁pointers . ▁ ▁An ▁Object ive - C ▁declaration ▁cannot ▁be ▁within ▁a ▁C ++ ▁template ▁declaration ▁and ▁vice ▁vers a . ▁However , ▁Object ive - C ▁types ▁( e . g ., ▁Class name ▁*) ▁can ▁be ▁used ▁as ▁C ++ ▁template ▁parameters . ▁ ▁Object ive - C ▁and ▁C ++ ▁exception ▁handling ▁is ▁distinct ; ▁the ▁handlers ▁of ▁each ▁cannot ▁handle ▁exceptions ▁of ▁the ▁other ▁type . ▁This ▁is ▁mit ig ated ▁in ▁recent ▁run times ▁as ▁Object ive - C ▁exceptions ▁are ▁either ▁replaced ▁by ▁C ++ ▁exceptions ▁completely ▁( App le ▁runtime ), ▁or ▁partly ▁when ▁Object ive - C ++ ▁library ▁is ▁linked ▁( G NU step ▁lib obj c 2 ). ▁ ▁Care ▁must ▁be ▁taken ▁since ▁the ▁destruct or ▁calling ▁convent ions ▁of ▁Object ive - C ▁and ▁C ++ ' s ▁exception ▁run - time ▁models ▁do ▁not ▁match ▁( i . e ., ▁a ▁C ++ ▁destruct or ▁will ▁not ▁be ▁called ▁when ▁an ▁Object ive - C ▁exception ▁ex its ▁the ▁C ++ ▁object ' s ▁scope ). ▁The