类的构造函数和析构函数 Class Constructors and Destructors
2015-06-07 00:11
316 查看
首先要说明,这两个字中国人是乱翻译的,像这样的翻译还有很多,估计哪个砖家喝高了,duang 一下,就翻译成这样了
socket 套接字
handle 句柄
instance 实例
字典上constructor 是这样翻译的:
我是查的朗文词典 没有constructor ,只有construct 加or 就是做这个的人 ,初中老师是这样教我的
construct 1, to build a large building, bridge, road etc 构筑,建造
2, an idea formed by combining pieces of knowledge 构想, 概念
3, formal something that is built or made [正式]建造物; 构成物
collins 的翻译也差不多
1 , If you construct something such as building, road, or machine, you build it or make it
2, If you construct something such as an idea, a piece of writing, or a system, you create it by putting different parts together
destruction 1 Destruction is the act of destroying something, or the state of being destroyed // 摘自collins
2 the act or process of destroying something 破坏 // 摘自朗文
看完翻译, construct 就是build 或者make 的意思
destruct 就是 destroy 的意思
本来很简单的两个词,硬是被翻译得看不懂了。
进入正题
我们先定义一个class
对于一个class来说,constructor 和 Destructor 某种程度是需要标准配备的, 下面我们一起讨论哈
为什么需要它们以及怎么去实现它们。
在C++里面,可以像使用标准类型(standard types) 一样去使用class object.
但是在初始化部分,还是有区别的
int year = 2001; //可以这样玩
struct thing
{
char *pn;
int m;
};
thing amabob = {"wodget", -23}; //同样是可以的
Stock hot = { "Sukie's Autos, Inc.", 200, 50.25}; // 不准这样玩
你不能这样去初始化一个Stock , 因为在Stock里面,有private 类型,也就是说,这种数据成员,函数是不能直接去
访问的。想访问这样的类型,唯一的办法是通过成员函数。那就是说,如果你想成功的去初始化一个object,那么你需要一个合适的成员函数,(当然,你可以把里面的private 成员改为public, 但是这样做,就违背了做用class的初衷: 数据隐藏.)
一般来说,最好所有的object在创建的时候,就被初始化好。比如, 看看下面的code.
对于当前Stock 类的实现, 我们没有给它的company 成员一个值。
如果要这样用,我们只能假设用户在调用任何成员函数之前去调用 acruire() 函数。
但是这种假设是没法保证一定成立的。为了解决这个问题, C++ 提供了一种特殊的成员函数,叫做class constructor.
用来构建新的object 以及给它的成员赋值。
socket 套接字
handle 句柄
instance 实例
字典上constructor 是这样翻译的:
我是查的朗文词典 没有constructor ,只有construct 加or 就是做这个的人 ,初中老师是这样教我的
construct 1, to build a large building, bridge, road etc 构筑,建造
2, an idea formed by combining pieces of knowledge 构想, 概念
3, formal something that is built or made [正式]建造物; 构成物
collins 的翻译也差不多
1 , If you construct something such as building, road, or machine, you build it or make it
2, If you construct something such as an idea, a piece of writing, or a system, you create it by putting different parts together
destruction 1 Destruction is the act of destroying something, or the state of being destroyed // 摘自collins
2 the act or process of destroying something 破坏 // 摘自朗文
看完翻译, construct 就是build 或者make 的意思
destruct 就是 destroy 的意思
本来很简单的两个词,硬是被翻译得看不懂了。
进入正题
我们先定义一个class
// stock00.h -- Stock class interface // version 00 #ifndef STOCK00_H_ #define STOCK00_H_ #include <string> class Stock // class declaration { private: std::string company; long shares; double shar_val; double total_val; void set_tot() { total_val = shares * share_val; } public: void acquire(const std::string & co, long n, double pr); void buy(long num, double price); void sell(long num, double price); void update(double price); void show(); }; // note semicolon at the end
对于一个class来说,constructor 和 Destructor 某种程度是需要标准配备的, 下面我们一起讨论哈
为什么需要它们以及怎么去实现它们。
在C++里面,可以像使用标准类型(standard types) 一样去使用class object.
但是在初始化部分,还是有区别的
int year = 2001; //可以这样玩
struct thing
{
char *pn;
int m;
};
thing amabob = {"wodget", -23}; //同样是可以的
Stock hot = { "Sukie's Autos, Inc.", 200, 50.25}; // 不准这样玩
你不能这样去初始化一个Stock , 因为在Stock里面,有private 类型,也就是说,这种数据成员,函数是不能直接去
访问的。想访问这样的类型,唯一的办法是通过成员函数。那就是说,如果你想成功的去初始化一个object,那么你需要一个合适的成员函数,(当然,你可以把里面的private 成员改为public, 但是这样做,就违背了做用class的初衷: 数据隐藏.)
一般来说,最好所有的object在创建的时候,就被初始化好。比如, 看看下面的code.
Stock gift; gift.buy(10, 24.75);
对于当前Stock 类的实现, 我们没有给它的company 成员一个值。
如果要这样用,我们只能假设用户在调用任何成员函数之前去调用 acruire() 函数。
但是这种假设是没法保证一定成立的。为了解决这个问题, C++ 提供了一种特殊的成员函数,叫做class constructor.
用来构建新的object 以及给它的成员赋值。
相关文章推荐
- eclipse中maven搭建birt需要的配置
- 如何给系统升级
- 浅谈Google File System
- C# 判断字符串为空大全
- 我的Cocos2d-x学习笔记(二十三)数据持久化之CCUserDefault
- sgu255:Winsock 3 Beta(二进制分析)
- 必须掌握的第三方框架清单:
- Oracle 10046事件详解
- 《幸福终点站》观后感·
- HAProxy的三种不同类型配置方案
- C#进阶ADO.NET基础一 基本概念、数据库连接操作基础
- 接上一篇博文,继续双机通信问题研究
- Timer与ScheduledThreadPoolExecutor的比较
- java 的exception throw try catch
- Ubuntu下用cue文件对ape和wav文件自动分轨
- 【Linux】进程调度概述
- HTML5另类塔防游戏 -《三国战线》发布
- 投资的原则不是收益能有多大,而是失败了能不能保本
- Json学习笔记
- 【C++缺省函数】 空类默认产生的6个类成员函数