C++命名空间
泛型算法
第五篇 面向对象的程序设计
第四篇 基于对象的程序设计
第三篇 基于过程的程序设计
第二篇 基本语言
第三章 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; // 程序之外的某处有这个变量的定义,一般放在头文件里
一处定义 多处声明
关键字
全局变量会自动初始化 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++概述
程序就是用算法来操作数据。
第一章 开始
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