`

Simple Items

 
阅读更多

Item 7 多态基类中将析构函数声明为虚拟

1> 多态基类应该声明虚析构函数。如果一个类有任何虚函数,它就应该有一个虚析构函数。

2> 纯虚析构函数也必须有函数体。否则linker报错。

● Item 10 赋值函数要返回引用

赋值函数的特点:
1> 可以无限连:x = y = z = 15;
2> 满足右结合律:x = (y = (z = 15));

基于上面的特点,赋值操作必须返回*this。
+=、-=、*=等操作也算在内。

● Item 16 使用匹配的new和delete

std::string *stringArray = new std::string[100];
delete stringArray;

上面使用delete回收对象数组的资源,属于未定义行为。反之亦然。

需对typedef的数组注意:



应在实际使用中避免此类写法。需要动态数组的时候,使用STL里的string或vector。

Item 21 必须返回对象时别返回引用

1> 绝不要返回一个局部栈对象的指针或引用

2> 绝不要返回一个被分配的堆对象的引用。原因是caller在使用该引用时,可能会因为无法保存引用而导致资源泄漏。

3> 如果存在需要一个以上这样的对象的可能性时,绝不要返回一个局部 static 对象的指针或引用。原因:多个地方使用同一个该static对象的引用,会引起理解混乱。caller们以为多次调用是多个对象,想不到竟然其实是一个对象。

● Item 22 将数据成员声明为private

理由:
1> 通过函数实现对成员的访问控制
2> 封装后,可以在实现上有自由度,来适应客户的实际需要
3> 只允许你的成员函数访问它们,你就有权力在以后修改它们。一旦声明为public或protected,就变成客户的东西了,你不能改

● Item 24 需要对所有参数实施类型转换的话,使用非成员函数

Item 28 避免返回对象内部构件的句柄

所谓句柄,就是引用,指针,或STL中的迭代器。返回对象内部的句柄有可能会产生空悬句柄。比如下面返回的Point引用。

● Item 32 公有继承是is-a的关系
● Item 38 通过“合成”来实现附属关系、附属功能

分享到:
评论

相关推荐

    Unity各种日用生活物品模型Simple Items – Cartoon Assets1.04

    《Unity中的日用生活物品模型:Simple Items – Cartoon Assets 1.04》 Unity,作为全球广泛应用的游戏开发引擎,不仅在游戏制作领域独树一帜,也常常被用于创建虚拟现实、教育模拟以及视觉展示等多种场景。"Simple...

    QuickBooks 2019 All-in-One For Dummies

    No stone is left unturned, giving you everything you need to turn what used to be harrowing tasks into simple items you can check off on your to-do list. Helps you use QuickBooks to ease accounting ...

    Amazon simple DB guide

    每个域可以存储多个项(items),每个项由多个属性(attributes)组成,属性名与属性值构成键值对。 3. **操作**:Simple DB提供了各种操作来管理数据,包括创建域、删除域、向域中添加数据、从域中检索数据以及...

    Lucene+Nutch搜索源码

    Lucene+nuctch一书的全部源码 测试源码 和几个简单的项目 (Lucene+ Nuctch a book all the source code and test a few simple items)

    Multiline balloon tooltips on ListView items

    Description: The attached code demonstrates a technique you can use to create multiline balloon tooltips for ListView items.The code is based on the following simple idea. In the MouseMove event you ...

    Laravel开发-simple-laravel-feed

    Simple Laravel Feed 包含的迁移文件将定义所需的数据表结构,如 feeds 和 feed_items,以便存储新闻源信息。 8. **Routing(路由)**: Laravel 的路由系统允许精确地定义应用程序的 URL 结构和对应的处理函数。...

    SimpleDB

    SimpleDB的核心概念包括域(Domains)、项目(Items)和属性(Attributes)。在本文中,我们将深入探讨SimpleDB的特性、使用场景、API接口以及与Java的集成。 1. **SimpleDB的特点** - **分布式架构**:SimpleDB...

    实验报告-SimpleDB实验1

    【实验报告-SimpleDB实验1】是关于数据库课程实践的一部分,主要涉及了SimpleDB系统中的数据结构`TupleDesc`和`Tuple`的实现。在SimpleDB中,`TupleDesc`对象用于描述表中的元组(记录)结构,包括每个字段的名字和...

    QT5.5 Demo - Simple Tree Modek Example

    Simple models represent data as a table of items, and allow views to access this data via an index-based system. More generally, models can be used to represent data in the form of a tree structure ...

    VB_Simple_PLCIO

    4. **浏览和选择OPC项**:连接成功后,可以浏览OPC服务器上的数据项(Items),比如PLC的输入和输出地址。选择需要通信的项,为后续的数据读写操作做准备。 5. **数据读写**:OPC提供了一套API,用于读取和写入PLC...

    simple_items_list_example:express + mongo 应用示例

    请首先运行npm i来安装依赖项(其中一些是自动生成的,现在不需要)。 我已经在 DB 设置了一些数据。 您可以随心所欲地更改它。 但我没有附加数据库生成的脚本。 有几个同名的产品 - 这不是错误。...

    Simple CRUD Operation Using AngularJS - Part 1.zip

    $scope.items = response.data; }); ``` 在HTML中,我们可以使用ngRepeat指令循环遍历这些项目并显示它们。 ```html <li ng-repeat="item in items"> {{item.name}} - {{item.description}} ``` **更新...

    simple-pagination:仅提供简单的分页逻辑

    简单分页 仅提供简单的分页逻辑安装npm install --save simple-pagination原料药/* * Returns pagination result * * @param { number } totalCount - Number of items that will be paginated * @param { number } ...

    simple-scroll:响应式水平滚动

    $('.your-items').scroll(options)在你想要的样式的项目列表上$('.your-items').scroll(options) options = { speed: 400 // scroll speed in ms } ###演示: ###作者: 瑞安·沃尔特斯

    Essential SNMP 2nd Edition

    The Simple Network Management Protocol (SNMP) is an Internet-standard proto- col for managing devices on IP networks. Many kinds of devices support SNMP, including routers, switches, servers, ...

    Simple_website

    align-items: center; height: 100vh; } ``` 4. **选择器和伪类**:CSS提供了多种选择器,如类选择器(`.class`)、ID选择器(`#id`)、属性选择器(`[attr=value]`)以及伪类选择器(`:hover`, `:active`, `:...

    react-simple-infinite-loading:用户在React中向下滚动时会无限加载内容的列表

    安装npm install --save react-simple-infinite-loading用法 import React from 'react'import InfiniteLoading from 'react-simple-infinite-loading'function Example ( { items , fetchMore , hasMore } ) { ...

    GCD的简单使用simple-use-of-gcd-master.zip

    2. **Dispatch Work Items**:任务是通过`dispatch_block_t`类型表示的,它是一个无参数、无返回值的闭包。在队列中调度任务使用`dispatch_async`、`dispatch_sync`等函数。`dispatch_async`用于异步执行任务,不...

    PIM_接口_PIM_assignment_java上机实验_pimcmd_

    编写基于命令行形式的个人信息管理(PIMCmd)程序,要求如下:This assignment involves the creation of simple Personal Information Management (个人信息管理 ) system that can deal with 4 kinds of items: ...

    Homework 7_Knowledge items of C++_(part 2).zip

    Each task requires writing some simple code to reflect your understanding of some knowledge of C++. II. Tasks of the homework Read the files in the folder Code of this assignment on Moodle. The ...

Global site tag (gtag.js) - Google Analytics