标签:
C++有六个默认函数:分别是
1、default构造函数;
2、默认拷贝构造函数;
3、默认析构函数;
4、赋值运算符;
5、取值运算符;
6、取值运算符const;
例:
Person.h #ifndef PERSON_H #define PERSON_H #include <iostream> #include <string> using namespace std; class Person { public: Person(); // deafault构造函数; Person(const Person&); // 默认拷贝构造函数 ~Person(); // 析构函数 Person& operator = (const Person &); // 赋值运算符 Person *operator &(); // 取值运算符 const Person *operator &() const; // 取值运算符const public: string getName() { return sName; } string getCode() { return sCode; } void setName(string name); void setCode(string code); void printInfo(); private: string sName; string sCode; }; #endif // PERSON_H
Person.cpp #include "Person.h" Person::Person() { cout << "运行:default构造函数;" << endl; } Person::Person(const Person &src) { cout << "运行:copy构造函数;" << endl; sName = src.sName; sCode = src.sCode; } Person::~Person() { cout << "运行:析构函数;" << endl; } Person &Person::operator =(const Person &src) { cout << "运行:赋值运算符;" << endl; sName = src.sName; sCode = src.sCode; return *this; } Person *Person::operator &() { cout << "运行:取址运算符;" << endl; return this; } const Person *Person::operator &() const { cout << "运行:取址运算符const;" << endl; return this; } void Person::setName(string name) { sName = name; } void Person::setCode(string code) { sCode = code; } void Person::printInfo() { cout << "Name : " << sName << endl; cout << "Code : " << sCode << endl << endl; }
main.cpp #include <iostream> #include "Person.h" using namespace std; int main() { // 创建a Person a; a.setName("李明"); a.setCode("0101"); // 创建b Person b(a); b.setCode("0102"); // 创建c Person c; c = b; c.setCode("0103"); // 创建d Person *d; d = &a; d->setCode("0104"); // 输出 a.printInfo(); b.printInfo(); c.printInfo(); d->printInfo(); return 0; }
输出结果:
只声明一个空类而不去使用时,编译器会默认生成:
1、default构造函数; 2、默认拷贝构造函数; 3、默认析构函数; 4、赋值运算符;
构造函数:
构造函数用于创建对象,对象被创建时,编译系统对对象分配内存空间,并自动调用构造函数。
构造函数运行的过程是:
1、系统创建内存空间,调用构造函数;
2、初始变量表;
3、函数体部分运行;
析构函数:
在对象析构时被掉用,用于析构对象,释放内存;
copy构造函数:
标签:
原文地址:http://www.cnblogs.com/sulong-FC/p/4639491.html