1:

const int * ptr 指向常量(read only)的指针

对指针重新赋值可以

对指针指向的内容重新赋值不行

int * const ptr 指向的指针常量

2:

在类的声明中 声明一个 static const 型成员变量 是可以的

class A

{

private:

static const int num = 5;

int Array[num];

};

这里对于变量 num 不需要 在定义就可以使用

但注意这里 只能声明 const型的成员变量

对于 static 非const 成员变量

class A

{

private:

static int num = 5;

int Array[num];

};

这样子会报错!
..\/basic.h:15:19: error: ISO C++ forbids in-class initialization of non-const static member 'num'
..\/basic.h:16:15: error: array bound is not an integer constant before ']' token

解决办法 就是在.cpp文件中 定义咯~

4:

the enum hack

看起来好像 这和 static const unsigned  成员变量 没什么区别

class A

{

public:

static const int num = 5;

enum {numEnum = 5};

int scores[num];

int shit[numEnum];

};

但实际上 enum 的内容与define 很类似

取一个 static const int 成员变量的值是合法的

但是取一个 enum 或是 define 出来的变量的值是不合法的

int main()

{

A a;

cout<<&a.num<<endl;

cout<<&a.numEnum<<endl;  //error!

return 0;

}

enum分配出来的东西不会导致额外的内存分配
5:
(1) 对于C-like 类型而言 (也即是 内置类型
pass-by-value 往往比 pass-by-reference 高效
(2)但是对于C++ 来讲 由于存在 构造与析构函数
pass-by-reference-to-const 往往更高效
(3)对于template C++而言更是如此 应为我甚至不知道所处理对象的类型
所以pass-by-reference-to-const 比较好
#ifndef BASIC_H_
#define BASIC_H_
#include <iostream>
using namespace std;
class A
{
public:
static const int num = 5;
enum {numEnum = 5};
int scores[num];
int shit[numEnum];
template <class T>
inline const T& callWithMax(const T& a,const T& b)
{
return (a>b?a:b);
}
};
class B
{
public :
int a;
inline bool operator >(const B &ref) const
{
return a>ref.a;
}
friend ostream& operator <<(ostream &os,const B &ref);
B(int temp):a(temp){};
};
#endif /* BASIC_H_ */

#include "basic.h"
ostream & operator <<(ostream & os,const B &b)
{
cout<<b.a<<endl;
return os;
}

#include <iostream>
#include <list>
#include <map>
#include "basic.h"
using namespace std;
int main()
{
A a;
B b1(1),b2(2);
cout<<a.callWithMax(b1,b2)<<endl;
return 0;
}

转载于:https://www.cnblogs.com/wangshuai901/archive/2011/09/07/2169583.html

effective C++ 读书笔记(0-2)相关推荐

  1. Effective C++读书笔记 摘自 pandawuwyj的专栏

    Effective C++读书笔记(0)       Start   声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节.   std::size_t numDigits(i ...

  2. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  3. Effective STL 读书笔记

    Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...

  4. more effective c++和effective c++读书笔记

    转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...

  5. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  6. Effective Java 读书笔记(一)

    前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...

  7. Effective C++ 读书笔记 Item1-Item4

    目录 守则01:把C++看做一个语言的集合,而不是单一的语言 守则02:尽量使用const, enum, inline, 减少宏变量#define的使用 守则03: 尽可能使用const关键字 守则0 ...

  8. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  9. Effective C++读书笔记(一)

    百度博客本来就垃圾,我以前发表的文章也全是废品.就在csdn这里放上我的读书笔记,自娱自乐下. 1 让自己习惯C++ 条款01:视C++为一个语言联邦 C语言同时支持过程形式(procedural). ...

  10. 【effective c++读书笔记】【第7章】模板和泛型编程(3)

    条款46:需要类型转换时请为模板定义非成员函数 对条款24的例子进行模板化: #include<iostream> using namespace std;template<type ...

最新文章

  1. Elasticsearch 参考指南(脚本)
  2. IDEA创建maven项目报错解决:Failed to create a Maven project: 'C:/Users/../IdeaProjects/../pom.xml' already e
  3. 万字长文详解大数据应用实战案例-万亿级大数据监控平台建设方案
  4. 算法与数据结构(part1)--算法简介及大O表示法
  5. 浅谈移动互联网广告设计评论
  6. HR经常会用到的面试问题
  7. dataframe切片_Kaggle:识别淋巴结病理切片有无癌细胞(logistic+svm+rf+CNN)
  8. react的导出是怎么实现的_不到一百行代码,我们来实现一个简简简简简简简简简简版react库...
  9. csv文件导入后台乱码_win7系统下excel打开csv文件出现乱码怎么修复
  10. java实现斐波那契数列的三种方法
  11. 以太网通信协议UDP
  12. 我用Python爬取美食网站3032个菜谱并分析,真香!
  13. 麒麟V10SP1的国产化Qt适配
  14. 4核服务器型号,服务器厂商、型号、参数。
  15. C++11:lambda表达式
  16. 每周分享第 29 期
  17. tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示【转】
  18. 信息无障碍 - 改造指南
  19. linux下给文件赋予所有权限
  20. 前端基础(四)_数据类型的强制转换

热门文章

  1. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  2. 如何从服务器导出文件,如何从云服务器导出文件
  3. C语言DCI(OCI)方式连接DM数据库
  4. 织梦需要php什么版本,DedeCmsV5.1FreeSP1正式版发布
  5. Linux命令(11)—— 给文件增加和减少权限chomod命令
  6. 跳跃游戏—leetcode55
  7. C++、python、CUDA性能分析--矩阵乘法
  8. mysql事务所_MySQL事务,这篇文章就够了
  9. pygame中Rect(left, top, width, height)的参数详解
  10. Ubuntu 必装软件及安装教程