C++之构造函数
来源:互联网 发布:linux更改root密码 编辑:程序博客网 时间:2024/06/05 11:26
ps:红色字体为2015/7/11号更新。
构造函数:
一、 作用:给对象分配内存,进行初始化(即对数据成员进行初始化)。
二、性质:(除了具有一般成员函数的特征外)
第一,构造函数的名字必须与类相同。
第二,构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。
========
构造函数是不需要指定返回类型的。但是,我们并不是说,构造函数是没有返回值的。就入上面所说,它是有一个隐含的返回值的。
根据下面的blog,我们的结论还是比较明确的:构造函数的返回值为该类的一个对象。。。
http://blog.csdn.net/tangaowen/article/details/1818819
那么对于对于析构函数呢? 我们也是知道的,析构函数也是没有函数的。。
========
第三,构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。
第四,构造函数被声明为公有函数,但是不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用。
示例:
<span style="font-size:18px;">class Date{ private: int year,month,day; public: Date(int y,int m,int d);//构造函数};Date::Date(int y,int m,int d)//构造函数的函数体写在了类外{ //这个应该是和普通的成员函数一样. year=y; month=m; day=d;}</span>三、这样使用构造函数。
第一,用构造函数直接创建对象。
类名 对象名(实参表);
示例:
<span style="font-size:18px;">Date date1(2013,10,29);</span>第二,用构造函数new+指针。
类名 *指针变量 = new 类名(实参表);
示例
<span style="font-size:18px;">Date *date2=new Date(2013,10,29);</span>Ps:
1,构造函数的名字必须与类名相同,否则编译程序会把它当作一般的成员函数来处理。
2,构造函数的不能说明它的返回值类型的,甚至为void也不行。
3,构造函数的可以不带参数的。示例如下
<span style="font-size:18px;">class Date{ private: int year,month,day; public: Date();//构造函数};Date::Date(){cout<<"constructing....";}Date date3;</span>在定义的date3时,调用构造函数,输出constructing。
四、成员初始化表
第一,在声明类时,不能再数据成员的声明中对数据成员进行初始化,对数据成员的初始化工作一般在构造函数中用赋值语句进行。
示例:
<span style="font-size:18px;">class Date{ private: int year=2013,month=10,day=29; public: Date();//构造函数};</span>这种做法是错误的。
第二,可以用带有成员初始化表的构造函数来进行初始化。
类名::构造函数名(参数表):成员初始化表
{ }
示例:
<span style="font-size:18px;">class Date{ private: int year,month,day; public: Date(int y,int m,int d):year(y),month(m),day(d)//构造函数 { }};Date date3(2013,10,29);</span>
Ps:
1,如果需要将数据成员放在堆或者数组中,则应在构造函数中使用赋值语句,即使构造函数有成员初始化表也应该如此。
示例:
<span style="font-size:18px;">const int N=10;class Stu{ private: int num,score; char name[N],add[N]; public: Stu(int n,int s,char name1[],char add1[]):name(n),score(s) {strcpy(name,name1);strcpy(add,add1);}};</span>2,类成员函数是按照他们在类中被声明的顺序进行初始化话的,与他们在成员初始化表中列出的顺序无关。
示例:
<span style="font-size:18px;">class D{ private: int a,b; public: D(int x):b(x),a(b+1) {cout<<"a="<<a<<",b="<<b<<',';}};D d(10);</span>输出为a=2147323805(乱码),b=10.
以上就是C++中构造函数的基本内容,当然,还有很都的内容有待总结。
- 【C#】 之 构造函数
- objective-c之构造函数
- C/C++学习之构造函数
- C#OOP之六 构造函数和析构函数
- 【C/C++】C++高级主题之复制构造函数
- 【C++】拷贝构造函数
- C#:静态构造函数
- C++:拷贝构造函数
- explicit构造函数(C++)
- C++:关于构造函数
- C++-构造函数
- C++String构造函数
- c++-转换构造函数
- c++"拷贝构造函数
- C++: 拷贝构造函数
- object-c 构造函数
- C#构造函数
- objective-c 构造函数
- Myeclipse代码生成模板(xml配置文件)
- SVN版本控制与删除
- sql 获取字符串中最小的数
- 从 Push-Action 到 Encourage-Response
- OCP-1Z0-052-V8.02-132题
- C++之构造函数
- address的网络字节的转换接口
- Android图形图画学习(7)——drawBitmapMesh
- mac中如何在一个app中打开另一个app
- db2命令行常用操作
- Lighttpd中cgi执行流程
- 囧事一箩筐(2)
- 黎明重工生产的颚式破碎机性能特点
- 解决宽屏电脑打游戏不全屏解决方法