c++
:: 指定所在命名空间
1.cout << "" << book cout输出 先字符串 然后输出book内存区域中的值;
2. 函数组成:返回类型,函数名,参数表,函数体, 前三部分称为函数原型
3. 扩展基本数据类型,字符串string, 复数complex number,向量vector, 列表list
#include<string> string c = "gett";
#include<vector> vector<string> c {20}; 包含20个字符串类型的元素
4. 预处理器指示符, 条件指示符#ifndef BOOK_H, 检查在前面是否已经定义, 没有定义,指示符为真,
#define 代码 #endif 被执行;
5. c++ 使用库 c开头,去掉后缀 .h
6. 文件输入输出 #include<fstream>
7. 对象的动态分配
int *pint = new int {1024}; 分配一个没有名字的int类型对象,初始值1024;返回对象在内存中的地址,这个地址被用来初始化指针对象pint;对于动态分配的内存,唯一的访问方式是通过指针间接访问;
int *pia = new int [4]; 分配一个含有四个整数的数组,pia拥有第一个元素的地址
必须显示的释放这些内存
delete pint;删除单个 delete [] pia 删除一个对象数组;
8. 基于对象设计类
class classname{
public ://公共操作
private://私有实现 };
操作称为成员函数或方法
使用俩个成员访问操作符,可以调用一个有名字的成员函数; 用于类对象(.) 类对象指针的(->)
数据成员名字前面加一个下划线(_)
函数重载,多个相同名字的函数,参数列表必须不同:参数类型或数目不同
被声明为static 的数据成语是一类特殊的共享数据成语,无论定义了多少个,静态数据成员在程序中只有一份;
在类体外定义成语函数,语法区别需要指出成语函数属于哪个类,通过类域操作符实现 :: 双冒号;
析构函数,每个类对象在被程序最后一次使用之后,它的析构函数会自动被调用, 在类的名字前加 (~)来标识;析构函数会释放在类对象使用和构造过程所获得的资源;
protected保护级别,保护区内的数据成员和成员函数,不提供给一般的程序,只提供给派生类;
非公有的成员声明,希望防止派生类直接访问某个成员,声明private;如果确信某个成员提供了派生类需要直接访问的操作或数据存储,而通过这个成员,派生类的实现会更有效,声明protected;
为了把一个类设计成基类,找出类型相关的成员函数,标记为virtual(虚拟的);
对于一个非虚拟函数的调用,编译器在编译时刻选择被调用的函数,虚拟函数调用 的决定要等到运行时刻;
class IntArrayRC : public IntArray 冒号定义了IntArrayRC 是从IntArray派生而来的,public表明派生类共享基类的公有接口
使用命名空间,namespace Cplus_Pri{
class ..{}; class.. {}; }
使用限定修饰名字符格式 namespace_identifier :: entity_name
名字空间别名允许一个可替代,短的
using 指示符,使名字空间内的所有声明都可见 ; 允许使名字空间中单个声明可见,
9. 数组类是C++标准库一部分,叫 向量vector; 向量是一个类模板 ; vector数组可以在运行时刻动态增长(向现有的数组元素复制,插入附加元素);作为独立的泛型算法被提供;
vectot<int> ivec(10); 包含10个整型对象的向量
vector<string> svec(10);
#include<vector>
vector<int> vec; 空的vector; const int size =8; size为8的vector;
10. extern 声明 extern string filename; extern 对象类型 名字; 声明不是定义,不会引起内存分配;
如果一个变量是在全局域内定义的,系统提供初始值0;
在局部与定义的或new表达式动态分配的, 这些对象称为未初始化的;不是没有值,而是它的值是未定义的;
显式语法 int v= 12; string pro = "hell";
隐士语法 int v(12); string pro ("hell");
每种内置数据类型都支持一种特殊的构造函数,将对象初始化为0
int v = init(); double d = double(); vector<int> v(10);
11. c++ 空类型指针(void*) , 可以被任何数据指针类型的地址赋值(函数指针不能赋值给它);
解引用操作符* 来间接读写
引用类型由类型标识符和一个取地址操作符来定义,引用必须被初始化; int v=111; int &refV = i;
引用必须总是指向一个对象,如果一个引用给另一个引用赋值,改变的是被引用的对象而不是引用本身;