码迷,mamicode.com
首页 > 编程语言 > 详细

C++ primer 笔记

时间:2017-09-09 13:08:32      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:ace   lin   eve   ssi   版本   func   c++   line   const   

Chapter 2

low-level & top-level const

int i = 0;
int *const p1 = &i;         // top-level
const int c1 = 42;          // top-level
const int *p2 = &ci;        // low-level
const int *const p3 = p2;   // low-level (left) & top-level (right)
const int &r = ci;          // both low-level

constexpr

constexpr int mf = 20;

type alias

typedef double wages;       // classic
typedef wages base, *p;

using SI = Sales_item;      // C++11

pointer alias

typedef char *pstring;
const pstring cstr = 0;     // cstr是指向char的常量指针
const pstring *ps;          // ps是一个指针,它的对象是指向char的常量指针

const char *cstr = 0;       // [注意]与 const pstring cstr 不同!

decltype

decltype(f()) sum = x;

decltype 与 引用

decltype(i) e;      // 正确
decltype((i)) d;    // 错误, d 是 int&

Chapter 3

多维数组的类型别名

using int_array = int[4];
typedef int int_array[4];

Chapter 6 函数

声明一个返回数组指针的函数

int (*func(int i))[10];
auto func(int i) -> int(*)[10];    // lamabda

函数重载

const_cast

const string &shorterString(const string&, const string &);

// 使用const_cast重载原函数的非常量版本
string &shorterString(string &s1, string &s2)
{
    auto &r = shorterString(
                const_cast<const string&>(s1),
                const_cast<const string&>(s2));
    return const_cast<string&>(r);
}

函数实参

默认实参

typedef string::size_type sz;
string screen(sz, sz, char = ' ');
string screen(sz, sz, char = '*');      // 错误
string screen(sz = 24, sz = 80, char);  // 正确

默认实参初始值

sz wd = 80;
char def = ' ';
sz ht();
string screen(sz = ht(), sz = wd, char = def);
string window = screen(); // 调用 screen(ht(), 80, ' ');

Chapter 7 类

特性

可变数据成员

关键字 mutable

返回*this的成员函数

返回*this表示将对象作为左值返回,意味着可以将一系列操作连接在一条表达式中

myScreen.move(4, 0).set('#');

基于const的重载

class Screen {
public:
    Screen &display(std::ostream &os) {
        do_display(os); return *this;
    }
    const Screen &display(std::ostream &os) const {
        do_display(os); return *this;
    }
}

Screen myScreen(5, 3);
const Screen blank(5, 3);
myScreen.set('#').display(cout);    // 非常量版本
blank.display(cout);                // 常量版本

委托构造函数

一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程

Chapter 8

string流

istringstream

istringstream record(line);
record >> info.name;

ostringstream

ostringstream formatted;
formatted << anyString << endl;
cout << formatted.str();

Chapter 9

容器操作

emplace

以下等价

c.emplace_back(args);
c.push_back(T(args));

适配器

stack<int, vector<int>>stk; // 使用vector构造stack适配器

Chapter 10

泛型算法

  • back_inserter插入迭代器
  • for_each

lambda 表达式

  • 值捕获
  • 引用捕获
  • 隐式捕获

C++ primer 笔记

标签:ace   lin   eve   ssi   版本   func   c++   line   const   

原文地址:http://www.cnblogs.com/KaitoHH/p/7497591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!