c++中的构造函数
2015-09-24 16:48
274 查看
在c++中,类是对对象抽象了的一个模板,它不具有具体的数值,是一种数据结构,系统不给它分配空间,当我们初始化一个对象时,就需要用到构造函数了。
一、构造函数的特点:
1、名字与类名相同
2、可以是任何数据类型,但是没有返回值
3、系统自动调用构造函数
4、一个类可以定义多个构造函数
5、带默认参数值的构造函数
二、复制构造函数:建立一个新的对象时,用已有的对象去初始化新的对象
下面给出几个例子:
深复制:
一、构造函数的特点:
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; }
相关文章推荐
- 详解C++编程中的文件流与字符串流
- 数据机构与算法分析:C语言描述 第五章——Priority Queues(Heaps)中的5.4.2 Event Simiulation
- C++二分法在数组中查找关键字的方法
- C++中的重载
- 黑马程序员---C语言学习笔记之数组的基本概念和分类
- 解读C++编程的相关文件操作
- C++开源矩阵计算工具——Eigen的简单用法
- C语言strcpy,strncpy的用法
- C++中的string常用函数用法总结
- C++ atof函数
- vc++ ^ 符号
- C++中与输入相关的istream类成员函数简介
- C++ - 栈对象的empty和size
- c++运算符重载
- C++的get()函数与getline()函数使用详解
- C++编程中用put输出单个字符和cin输入流的用法
- Java和C++通过Socket通信中文乱码的解决
- C++Bulder之字符数组转换成AnsiString类型
- More Effective C++ ——08_理解各种不同含义的new和delete
- Effective C++总结(二)