码迷,mamicode.com
首页 > 编程语言 > 详细

C++基础知识梳理--C++的6个默认函数

时间:2015-07-13 13:56:44      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

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构造函数:

 

C++基础知识梳理--C++的6个默认函数

标签:

原文地址:http://www.cnblogs.com/sulong-FC/p/4639491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!