#include #include using namespace std; // struct people { class people { // private 定义私有的成员和函数 private: char *name; int age; // public 定义公开的成员和函数 public: people(){ cout << "default constructor invoke!" << endl; } // 构造函数,带默认值 people(char *n="no_name", int a=15) { int l = strlen(n); name = new char(l+1); strcpy(name, n); age = a; cout << "constructor invoke!" << endl; } char *get_name() { return name; } void set_name(char *n="no_name") { int l = strlen(n); name = new char(l+1); strcpy(name, n); } int get_age() { return age; } void set_age(int a) { age = a; } void print() { cout << "{name: " << name << ", age: " << age << "}" << endl; } // 声明类体外函数 void print2(); virtual ~people() { delete[] name; cout << "destructor invoke!" << endl; } }; // 类体外定义方法(成员函数),必须在类定义中声明,类体外要有类作用域 void people::print2() { cout << "{name: " << name << ", age: " << age << "}" << endl; } int main() { // people p1(); people p2("zhangsan", 18); people p3("lisi", 19); // p1.print(); p2.print(); p3.print(); p2.set_name("xyz"); cout << p2.get_name() << endl; // 调用类体外函数 p2.print2(); return 0; }