c++中的构造函数
来源:互联网 发布:centos zip 压缩 编辑:程序博客网 时间:2024/06/05 16:03
在c++中,类是对对象抽象了的一个模板,它不具有具体的数值,是一种数据结构,系统不给它分配空间,当我们初始化一个对象时,就需要用到构造函数了。
一、构造函数的特点:
1、名字与类名相同
2、可以是任何数据类型,但是没有返回值
3、系统自动调用构造函数
4、一个类可以定义多个构造函数
5、带默认参数值的构造函数
二、复制构造函数:建立一个新的对象时,用已有的对象去初始化新的对象
下面给出几个例子:
#include<iostream>using namespace std;class Desk{private:int kuan;int chang;public:Desk(int k=0,int c=0) :kuan(k), chang(c)//初始化列表{kuan = k;chang = c;}void Disp();};void Desk::Disp(){cout << chang << ' ' << kuan << endl;}int main(){Desk d1;d1.Disp();Desk d2(1,4);d2.Disp();for (;;){}return 0;}
#include<iostream>using namespace std;class Desk{private:int kuan;int chang;public:Desk();~Desk();void set(int x,int y);void Disp();};Desk::Desk(){chang = 0;kuan = 0;}Desk::~Desk(){cout << 'end' << endl;}void Desk::set(int x, int y){chang = x;kuan = y;}void Desk::Disp(){cout << chang << ' ' << kuan << endl;}int main(){Desk d1;d1.set(2, 3);d1.Disp();Desk d2(d1);//利用构造函数初始化对象d2.Disp();return 0;}
深复制:
#include<iostream>#include<cstring>using namespace std;class Desk{private:int kuan;int chang;char *name;public:Desk(){chang = 0;kuan = 0;}Desk(Desk &d);~Desk();void set(int x,int y,char *na);void Disp();};Desk::Desk(Desk &d){chang =d.chang ;kuan = d.kuan ;name = new char[strlen(d.name) + 1];strcpy(name, d.name);}Desk::~Desk(){delete[]name;cout << 'end' << endl;}void Desk::set(int x, int y,char *na){chang = x;kuan = y;name = na;}void Desk::Disp(){cout << chang << ' ' << kuan << ' '<<name<<endl;}int main(){Desk d1;d1.set(2, 3,"I Love");d1.Disp();Desk d2(d1);//利用构造函数初始化对象d2.Disp();return 0;}
0 0
- C语言中的构造函数
- 2.c++与objective-c中的构造方法(构造函数)
- 关于Object-c 中的构造函数与析构函数
- objective-c中的构造函数(对象初始化)(七)
- objective-c中的构造函数(对象初始化)(七)
- C++-面试题:深度拷贝与构造函数中的异常
- 【C++】C++中的Sequence Point,构造函数等问题
- Objective-C中的便利初始化函数和便利构造器
- objective-c中的构造函数(对象初始化)(七)
- 初识c#---继承和继承关系中的构造函数
- C#中的构造函数
- 构造函数中的引用
- DotNet中的构造函数
- C#中的构造函数
- c#中的构造函数
- C#中的构造函数
- 枚举中的构造函数
- PHP中的构造函数
- hive升级测试记录
- Struts2返回JSON数据的具体应用范例
- POJ 2031:Building a Space Station 最小生成树
- Android性能专项测试之Memory Monitor工具
- leetcode6
- c++中的构造函数
- jz2440的字符设备驱动
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
- C++内存管理
- shell的本地变量和环境变量
- java获得一个目录下的所有文件,和固定后缀的文件
- 四大图像库:OpenCV/FreeImage/CImg/CxImage
- 流式(TCP)套接字客户端/服务器编程 (多线程并发服务器)
- 自定义添加View