1. 空类
1.1 空类默认哪六个成员函数。
1 class Empty
2 {
3 public:
4 Empty(); //缺省构造函数 Empty e;
5 Empty( const Empty& ); //拷贝构造函数 Empty e2(e1);
6 ~Empty(); //析构函数
7 Empty& operator=( const Empty& ); //赋值运算符 Empty e2 = e1;
8 Empty* operator&(); //取址运算符 &e
9 const Empty* operator&() const; //取址运算符const &e
10 };
1.2 空类的sizeof()=1
每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址。
2. string类
以下四个函数,是C++编译器会自动加入的四个函数。
1 class MyString 2 { 3 public: 4 MyString(const char *str = NULL);//默认参数,不传递的该参数的时候发挥作用。 5 MyString(const MyString &other); 6 MyString& operator=(const MyString &other); 7 ~MyString(); 8 private: 9 char *m_data; 10 }; 11 MyString::~MyString() 12 { 13 delete [] m_data; 14 } 15 MyString::MyString(const char *str) 16 { 17 if(NULL == str) 18 { cout<<"调用普通构造函数1"<<endl; 19 m_data = new char[1]; 20 *m_data = '