C++ 读书笔记

C++命名空间

C++ Primer 3rd Edition

泛型算法

第五篇 面向对象的程序设计

第四篇 基于对象的程序设计

第三篇 基于过程的程序设计

第二篇 基本语言

第三章 C++数据类型

以byte(字节)      word(字)  = 4byte (32位系统)来定义

3.1文字常量

char 单个字符 和 小整数   1byte

int short long     float   doublelong double

word 1    1/2   1-2           1           2              3-4

wchat_t  宽字符文字

// L"dddd"宽字符是给汉字之类的用


3.2 变量

对象声明

extern String fileName; // 程序之外的某处有这个变量的定义,一般放在头文件里

一处定义  多处声明

关键字

C++ 读书笔记_第1张图片


全局变量会自动初始化  0

// 静态变量会自动初始化?

使用未初始化的对象,后果很严重,很难发现。

// 所有的成员变量的都需要显示的初始化


初始化形式:

int ival; // 未初始化

string project; // 通过string的缺省构造函数进行了初始化

显式语法形式

int ival = 1024;

string project = "Fantasia 2000";

隐式语法形式

int ival(1024);

string project("Fantasia 2000");

隐式转换【TODO】?

extern int get_value();

// extern还可以修饰方法


3.3指针类型

int *p = 0;  // 没有指向任何对象

void * pv;  // 空指针 函数指针不能赋值给它

void*表明相关的值是个地址但该地址的对象类型不知道我们不能够操作空类型指针
所指向的对象只能传送该地址值或将它与其他地址值作比


3.4 字符串类型

C字符串  char*

C++字符串 string


第一篇 C++概述

程序就是用算法来操作数据


第一章 开始

1.问题的解决

大问题->小问题->小小问题


2.算法

动作的序列,也是解决问题的步骤。


3.渐进式生成程序

试图一下子就能写出一个完全成功的程序,几乎是不可能的


4.内置的基本数据类型

  ANSI C/C++基本数据类型:

Type

Size

数值范围

无值型void

0 byte

无值域

布尔型bool    

1 byte

true   false

有符号短整型short [int] /signed short [int]

2 byte

-32768~32767

无符号短整型unsigned short [int]  

2 byte

0~65535

有符号整型int /signed [int]

4 byte

-2147483648~2147483647

无符号整型unsigned [int]

4 byte

0~4294967295

有符号长整型long [int]/signed long [int]

4 byte

-2147483648~2147483647

无符号长整型unsigned long [int]

4 byte

0~4294967295

long long

8 byte

0~18446744073709552000

有符号字符型char/signed char

1 byte

-128~127

无符号字符型unsigned char

1 byte

0~255

宽字符型wchar_t (unsigned short.)

2 byte

0~65535

单精度浮点型float 

4 byte

-3.4E-38~3.4E+38

双精度浮点型double

8 byte

1.7E-308~1.7E+308

long double

8 byte


c++标准库扩展的基本数据类型: 

  string [字符串]

  complex number [复数]

  vector[向量]

  list[列表]


5.内置类型之间允许隐式的类型转换

int age = 33.3333;  

// 容易引起bug,尽量用强制转换

int age = (int)33.3333;


6.容量

vector<string> chapter_titles( 20);    

=

Vector<String> v = new Vector<String>(20);[JAVA]

20是容量

// chapter_titles是在栈上分配的,不是new出来的。


7.预处理

#include <sys_file.h>

#include "my_file.h"

包含头文件,查找顺序不同


#include <iostream>

c++ 一般不带.h后缀


#ifndef BOOKSTORE_H

#define BOOKSTORE_H

#endif

防止重复包含


__cplusplus c++默认宏  

__LINE__  文件已经被编译的行数

__FILE__ 文件名

__TIME__ 文件被编译的时间

__DATE__ 文件被编译的日期

// 可以用在异常Log输出里输出 异常的当前函数名当前行数


assert 断言


8.注释

/* */

//


9.输入输出

#include <iostream>

cin >> strName 输入流

cout << str          输出流

cerr << str输出错误流


cout << '\n'  =  

cout << endl 换行    endl 带有刷新缓冲区的作用

I

ofstream outfile("out_file");
ifstream infile("in_file");
II
ofstream outfile1;
outfile1.open("out_file1");
ifstream infile1;
infile1.open("in_file1");

I 是II 的简写,文件的输入输出,格式比较特殊?【模板】?


第二章 C++浏览

1.数组 array

int array0[10];
int array1[10];

java版本

int[10] array0;
int[10] array1;

把一个数组赋值给另外一个数组  需要for循环挨个copy每个元素 or xcopy

array1 = array0 // 错误

array1本身是指向array1[0]的常量数组指针


array不知道自己的长度【java array0.length】


2.内存分配

静态 | 动态

&  取地址操作符

*   解引用操作符

int ival = 1024;
ival += 1;
ival++;
++ival;
int *pint;
pint = &ival;
cout << "指针地址:" << pint << endl;
cout << "值:" <<*pint << endl;

指针的主要用处是管理和操纵动态分配的内存

静态对象是有名字的变量,可直接进行操作,分配和释放由编译器自动处理

动态对象是没有名字的变量,通过指针间接的进行操作,分配和释放由程序员显示的管理  new  delete


Q&A:

1.Q:class的定义

.h 中声明class 类方法

virtual bool init(); 

.cpp 中实现

bool HelloWorld::init() {

}


2.对象的创建&调用


3.virtual 虚函数 方法?


4.哪些类型需要显示释放?

基本数据类型?

所有通过new 操作出来的指针对象都需要通过delete来显示的释放。

引用不用释放

这里需要理解C++的内存存储, 堆  栈 【TODO】


5.文件的输入输出格式


6.各种字符类型


7.引用 | 指针


8.extern  static

你可能感兴趣的:(C++ 读书笔记)