MORE EFFECTIVE c++ 1

news/2024/7/4 0:50:51 标签: c++, class, 编译器, string, 扩展
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

 

class="real_blog" style="text-indent: 2em; height: auto !important;">

Item1 指针与引用

  当你知道要指向一个对象,并且不会再指向其他对象时,应该使用引用。当实现某些操作符时,如果这些操作符在语义上要求使得指针不可行,此时,仍需要使用引用。其他情况下使用指针。

 

Item2

 


Item3   绝不要把多态应用于数组

   array[i]实际上是指针运算表达式的缩写。它表示的是*(array+i)。 数组和多态不能一起使用。
例如:


 
 

Item4  避免不必要的默认构造参数
1、无需任何外部信息即可以创建对象的类可以包含默认构造函数,而需要额外信息的来创建对象的类则不包含默认构造函数。
2、不提供默认构造函数,则不能用如下方法产生对象数组。
 

解决办法:
1、 Equip   array[] = {Equip(ID1),  Equip(id2), Equip(id3)};        但是不能扩展到堆上面
2、指针数组:
 typedef  Equip *  PEP;
 PEP  bestPieces[10];
 PEP      *bestPiece = new PEP[10];

 每个指针可以被重新赋值,指向不同的对象

 

===========================================================================

 纪念我丢失的数据,哎 这些笔记得重新整理了。。郁闷 当一个次复习吧

 

 

Item 5 小心用户自定义的转换函数
    两种函数让编译器实施隐式转换:单个参数的构造函数 和 隐式类型转换运算符。单参数的构造函数也可以定义多个

函数,但是要求第一个参数后面的所有参数都有一个默认值。
例子:

解决办法: 定义一个 asDouble函数替代operator double 运算符。这种成员函数必须被显示地调用。

例子2:

解决办法:1、在类的构造函数中声明为 explicit
         2、定义一个代理类,来表示数组的大小。
如下:

  

================================================================================
Item6 区分自增和自减运算符号的前后缀


写这个程序的几点注意:
1 分清楚前后缀的形式,开始写自前,先吧 i++  ++i 分别调用哪个函数写明白,注释好
2 根据调用讲函数声明好。注意那个调用应该返回什么参数,是常量还是引用。

 


http://www.niftyadmin.cn/n/739495.html

相关文章

vim学习笔记1217

Vim笔记 手册分为两部分: 1、用户手册 面向任务的使用说明书,由简入繁,可以像书一样读 2、参考手册: 针对某一主题的相关介绍,描述vim的每一个命令的详细资料 参考书册包含以下几个主题: 一般主题 基…

2009年终总结与展望

2009年终总结 平淡的一年又要过去,这一年没有感觉到什么特别激动、开心、倒霉的事情,自己也没有做什么东西。还记得去年写总结的时候,一年这么快就过去了了,哎。还是先看看去年都总结了什么?今天我又干了些什么吧&a…

C++关于读入多行的整型数据

1、//关于C读入多个整型数据&#xff0c;包含换行的办法 使用istringstream getline 头文件 #include <string>#include <sstream>using namespace std;string buf;int data[N];getline(cin, buf);istringstream stream(buf);while(stream>>data[i])…

关于算法、code jam

前些时候无意之中看见google code jam&#xff0c;虽然力邀兄弟姐妹一块参加&#xff0c;只有王箴同学一个人报名了。自己也没有认真考虑这个东西&#xff0c;一是感觉应该很难&#xff0c;而是也不是很十分积极。所以也就没有准备了。赛前一题都没有做过&#xff0c;连一些要求…

看论文,写论文,请用NoteExpress

如果你需要写论文&#xff0c;请用NoteExpress管理你的参考文献吧。这个软件真的很好用&#xff0c;你不用因为使用word的插入参考文献而烦恼了。 NoteExpress支持一键插入参考文献&#xff0c;能够方便的插入。一次建立题录后&#xff0c;你以后写论文&#xff0c;只要是在No…

C、C++题目笔记

1.2、下面程序输出什么&#xff1f; 1.2、下面程序输出什么&#xff1f;main() {int a[5]{1,2,3,4,5};int *ptr(int *)(&a1); printf("%d,%d",*(a1),*(ptr - 1));}输出&#xff1a;2,5 *(a1&#xff09;就是a[1]&#xff0c;*(ptr-1)就是a[4],执行结果是2&#…

编程珠玑总结—column 11 Sorting

Technorati 标签: 算法,笔记插入排序&#xff1a; 1: for i [1,n) 2: for (j i; j>0 && x[j-1]>x[j]; j--) 3: swap(j-1, j) 可以进一步优化上面的算法&#xff08;代码调整&#xff09;&#xff1a; 1: for i [1, n) 2: t x[i] 3: for…

(ZZ)三大WEB服务器对比分析(apache ,lighttpd,nginx)

一&#xff0e;软件介绍(apache lighttpd nginx)1. lighttpdLighttpd是一个具有非常低的内存开销&#xff0c;cpu占用率低&#xff0c;效能好&#xff0c;以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压…