diff --git a/examples/MODULE.bazel b/examples/MODULE.bazel
index 5984bdd..221af6c 100644
--- a/examples/MODULE.bazel
+++ b/examples/MODULE.bazel
@@ -24,8 +24,8 @@
 protoc = use_extension("@toolchains_protoc//protoc:extensions.bzl", "protoc")
 protoc.toolchain(
     google_protobuf = "com_google_protobuf",
-    # Demonstrate overriding the default version
-    version = "v28.0",
+    # NB: c++ codegen requires this version to exactly match the protobuf bazel_dep
+    version = "v29.3",
 )
 use_repo(protoc, "com_google_protobuf", "toolchains_protoc_hub")
 
diff --git a/examples/cc/BUILD.bazel b/examples/cc/BUILD.bazel
new file mode 100644
index 0000000..1d2bee9
--- /dev/null
+++ b/examples/cc/BUILD.bazel
@@ -0,0 +1,7 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+cc_binary(
+    name = "cc",
+    srcs = ["greeter_example.cc"],
+    deps = ["//proto:greeter_cc_proto"],
+)
diff --git a/examples/cc/greeter_example.cc b/examples/cc/greeter_example.cc
new file mode 100644
index 0000000..273934e
--- /dev/null
+++ b/examples/cc/greeter_example.cc
@@ -0,0 +1,93 @@
+#include <iostream>
+#include <fstream>
+#include <string>
+#include "greeter.pb.h"
+using namespace std;
+
+// This function fills in a Person message based on user input.
+void PromptForAddress(tutorial::Person* person) {
+  cout << "Enter person ID number: ";
+  int id;
+  cin >> id;
+  person->set_id(id);
+  cin.ignore(256, '\n');
+
+  cout << "Enter name: ";
+  getline(cin, *person->mutable_name());
+
+  cout << "Enter email address (blank for none): ";
+  string email;
+  getline(cin, email);
+  if (!email.empty()) {
+    person->set_email(email);
+  }
+
+  while (true) {
+    cout << "Enter a phone number (or leave blank to finish): ";
+    string number;
+    getline(cin, number);
+    if (number.empty()) {
+      break;
+    }
+
+    tutorial::Person::PhoneNumber* phone_number = person->add_phones();
+    phone_number->set_number(number);
+
+    cout << "Is this a mobile, home, or work phone? ";
+    string type;
+    getline(cin, type);
+    if (type == "mobile") {
+      phone_number->set_type(tutorial::Person::PHONE_TYPE_MOBILE);
+    } else if (type == "home") {
+      phone_number->set_type(tutorial::Person::PHONE_TYPE_HOME);
+    } else if (type == "work") {
+      phone_number->set_type(tutorial::Person::PHONE_TYPE_WORK);
+    } else {
+      cout << "Unknown phone type.  Using default." << endl;
+    }
+  }
+}
+
+// Main function:  Reads the entire address book from a file,
+//   adds one person based on user input, then writes it back out to the same
+//   file.
+int main(int argc, char* argv[]) {
+  // Verify that the version of the library that we linked against is
+  // compatible with the version of the headers we compiled against.
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  if (argc != 2) {
+    cerr << "Usage:  " << argv[0] << " ADDRESS_BOOK_FILE" << endl;
+    return -1;
+  }
+
+  tutorial::AddressBook address_book;
+
+  {
+    // Read the existing address book.
+    fstream input(argv[1], ios::in | ios::binary);
+    if (!input) {
+      cout << argv[1] << ": File not found.  Creating a new file." << endl;
+    } else if (!address_book.ParseFromIstream(&input)) {
+      cerr << "Failed to parse address book." << endl;
+      return -1;
+    }
+  }
+
+  // Add an address.
+  PromptForAddress(address_book.add_people());
+
+  {
+    // Write the new address book back to disk.
+    fstream output(argv[1], ios::out | ios::trunc | ios::binary);
+    if (!address_book.SerializeToOstream(&output)) {
+      cerr << "Failed to write address book." << endl;
+      return -1;
+    }
+  }
+
+  // Optional:  Delete all global objects allocated by libprotobuf.
+  google::protobuf::ShutdownProtobufLibrary();
+
+  return 0;
+}
diff --git a/examples/proto/BUILD.bazel b/examples/proto/BUILD.bazel
index 88c206c..a5a520c 100644
--- a/examples/proto/BUILD.bazel
+++ b/examples/proto/BUILD.bazel
@@ -2,6 +2,7 @@
 load("@rules_go//proto:def.bzl", "go_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
 load("@rules_rust_prost//:defs.bzl", "rust_prost_library")
+load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
 load("@protobuf//bazel:py_proto_library.bzl", "py_proto_library")
 
 package(default_visibility = ["//visibility:public"])
@@ -12,6 +13,11 @@
     deps = ["@com_google_protobuf//:any_proto"],
 )
 
+cc_proto_library(
+    name = "greeter_cc_proto",
+    deps = [":greeter_proto"],
+)
+
 py_proto_library(
     name = "greeter_py_proto",
     deps = [":greeter_proto"],
