C++类的定义之构造函数
来源:互联网 发布:剑三霸刀脸型数据 编辑:程序博客网 时间:2024/05/22 17:08
构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数是用来保证每个对象的数据成员具有合适的初始值。如下
Class Sales_item{
Public:
Sales_item(): units_sold(0);revenue(0.0){}
Private:
std::string isbn;
unsigned units_sold;
double revenue;
};
如果看过我前面两篇文章的朋友会发现 这个案例其实我在前面说过。从上可以看出,构造函数的名字必须与类名相同,并且不能指定返回类型。请其他任何函数一样,可以没有形参,也可以定义多个形参。Sales_item(): units_sold(0);revenue(0.0){}----->这个构造函数使用构造函数初始化列表来初始化unist_sold和revenue成员。
构造函数可以被重载,这就说明可以为一个类声明的构造函数的数量是没有限制的,但是得遵循重载的定义 即参数的类型和个数不能一样。如下
Class Sales_item{
Public:
Sales_item(const std::string&):
Sales_item(std::istream&);
Sales_item();
};
定义了那么多 到底应该调用哪个呢?实参决定调用的是哪个构造函数。构造函数是自动执行的,没创建该类型的一个对象,编译器就会运行一个构造函数。
与其他任何函数一样,构造函数具有名字,形参表和函数体。与其他函数不一样的是,构造函数也可以包含一个构造看书初始化列表:
Sales_item::Sales_item(std::string &book):isbn(book), units_sold(0), revenue(0.0) {} “构造函数初始化列表”以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化。
Sales_item::Sales_item(std::string &book)
{
isbn = book;
units_sold = 0;
revenue = 0.0;
}
上面案例说明构造函数省略初始化列表并在构造函数的函数体内对数据成员赋值是合法的。但是注意,有些成员必须在构造函数的初始化列表中进行初始化。对于这样的函数 在构造函数的函数体内对它们赋值不起作用。例如---->没有默认构造函数的类类型成员,以及const或引用类型成员。
- (C++)定义类的拷贝构造函数
- C++类的定义之构造函数
- php入门之 类的定义、构造函数
- CWinApp类构造函数定义的解释
- 【C#】 之 构造函数
- [c++]类的构造函数
- C++-类的构造函数
- C/C++ 之 函数的定义
- C# 类的定义及构造函数的重载
- c++之基础知识(1)定义类的对象;析构函数和构造函数常用模板
- More Effective C++----(4)避免无用的缺省构造函数 & (5)谨慎定义类型转换函数
- objective-c之构造函数
- 对于派生类的构造函数,在定义对象时构造函数的执行顺序
- 构造函数的定义和构造函数的重载
- 为何要把类的构造函数定义为private
- 抽象类----类中只定义了protected型的构造函数
- 派生类的构造函数定义以及参数传递
- 类的默认构造函数能否定义为私有
- linux内存管理
- javascript修改IMG标签的SRC刷新问题
- 字典树
- as
- relatedTarget
- C++类的定义之构造函数
- ARP地址解析协议
- VS 2008技巧
- spring aop与cglib aop
- J2ME实现联网功能
- SQL Server CHARINDEX和PATINDEX详解
- 改变对话框的系统菜单:程序运行时,在任务栏中的图标右键时弹出的菜单或是程序左上角左键弹出的菜单
- 设置imagebutton的alpha
- linux led子系统