notes of Accelerate C++

面向对象的优点:

1.         数据有效性

2.         数据安全性

 

::放在一个名字前,表示使用该名字的另一个版本,他不属于任何对象的成员。

 

即使一个程序没有直接的创造任何 const 对象,他也可能通过函数调用创造大量的 const 对象。

 

一般风格使用 struct 表示简单类型,公开其数据结构。

 

将一个成员函数的实现写在类定义里面,暗示编译器尽可能的内联展开。

 

构造函数执行的几个步骤:

1.         分配内存空间,保存这个对象。

2.         执行构造函数初始化列表,初始化这个对象。

3.         执行构造函数的函数体。

 

辅助函数的优点:将工作分开,一些成员用于提供接口,另一些成员用于处理实现。

这里可以以一个模板容器类Vec(标准库中Vector的简单版)的设计、构造思路为例:

首先,确定以系统分配的“数组”方式来储存数据。由此确定需要的初始数据, data,limit,avail,allocator<T>

其次,确定提供给用户的构造函数,以及必有得拷贝构造函数和析构函数。

然后,确定提供给用户访问数据的方式,即 operator[] begin end size.

最后,实现相应辅助函数,实现接口提供给用户的功能。

 

 

通常,迭代器本身也是一个类,该类应该包含一个指针,并且实现 ++ 操作符。

 

索引操作应该返回元素的引用,添加操作应该在系统分配的内存中创建一个等同的对象。

 

如果一个类需要析构函数,那么他也必然需要一个拷贝构造函数和一个赋值函数。

 

复制不是初始化(初始化包括拷贝构造)。前者需要删除左操作数已有的值(如果存在动态内存分配),并且返回的是左操

作数的引用,注意自我赋值的情形。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值