diff --git a/shared/cplusplus/PrettyPrinter.cpp b/shared/cplusplus/PrettyPrinter.cpp
index 4adc69e78c3158b1495b51166fdcd2f249cb6f7f..891a63020cd6de11c1cb964043e27539e064710c 100644
--- a/shared/cplusplus/PrettyPrinter.cpp
+++ b/shared/cplusplus/PrettyPrinter.cpp
@@ -145,12 +145,16 @@ bool PrettyPrinter::visit(AttributeAST *ast)
 bool PrettyPrinter::visit(BaseSpecifierAST *ast)
 {
     if (ast->token_virtual && ast->token_access_specifier) {
-        out << "virtual ";
+        out << "virtual";
+        out << ' ';
         out << spell(ast->token_access_specifier);
+        out << ' ';
     } else if (ast->token_virtual) {
         out << "virtual";
+        out << ' ';
     } else if (ast->token_access_specifier) {
         out << spell(ast->token_access_specifier);
+        out << ' ';
     }
     accept(ast->name);
     return false;
@@ -234,6 +238,7 @@ bool PrettyPrinter::visit(ClassSpecifierAST *ast)
                 out << ", ";
         }
     }
+    newline();
     out << '{';
     if (ast->member_specifiers) {
         indent();
diff --git a/tests/manual/cplusplus/tests/t1.cpp b/tests/manual/cplusplus/tests/t1.cpp
index 75c4666d55b3c1a75d22c957ee409009151471e2..8687efb48f440bf5bf2f53515f8f004b8928e136 100644
--- a/tests/manual/cplusplus/tests/t1.cpp
+++ b/tests/manual/cplusplus/tests/t1.cpp
@@ -22,3 +22,7 @@ class Class {
   }
 };
 
+class Derived: public Class {
+};
+
+class Derived2: public Class, public virtual Derived {};