上课总结的一些。记的一些笔记。
C++ is a general purpose programming language that :
~is a better C
~supports data abstraction(数据的抽象描述)
~supports object-oriented programming(面向对象)
~suppots generic programming
所以改用 #include<iostream> using namespace std 对同样一个问题:假设一张超市列的购物单,单价以及数量,有小计有总计。在C中,考虑的是一个数组,计算出每行,然后算出总计结果,好的编程风格会调用两个子函数来计算,这样每种物品都是单独计算的。但是实际上,我们看到一张单子,就是一张单子,不care是怎么计算的。所以将这些连同计算方法一起作为一个整体来看待。 在C++中,是将这两个子函数也作为一个class的一部分(成员函数),而将这些都封装起来。 3 变量命名长度受限于编译器 4 reference引用 格式:int &name = a,则name 就是一个和a一样的变量名。 5 函数调用的本质是初始化操作 6 const 一个const = const or non-const , non-const = non-const. 本质,一个constant不可以用任何形式改变其值,所以不可以赋值给一个变量。 7 new&delete 其本质是新申请或者释放已经存在的空间,指针还是存在,但是已经野了。。。。 new一个数组的时候不能显示初始化。 8 指针本身是long 类型
1 最新的C++标准不提倡.h
2 在思考方式的不同
This_is_a_name C++风格命名
ThisIsAName PASCAL风格
......
本质:一个地址的别名,alternative name.
作用:作为函数的参数,作为函数的返回值,某些时候可以作为左值(当返回值是一个地址名称时).
注意:定义时必须初始化,否则指向一个未知的固定内存单元
EG:
int &func(...)
{
...return &a;
}
int main()
{
...func() = 3;...
}
调用:实参赋值给形参
返回:返回值赋值给一个匿名单元。。。
EG: Type &anonymous = return值。在main()中receiver = anonymous....据我理解机制应该是这样。。
本质:常量,不可改变
注意:
const char *pointer = char const *pointer; 表示指针指向的char是常量,内容不变。但是pointer所指向地址可以改变。
char *const pointer;指针本身是常量,指向地址不变,内容可变。
const修饰其左边的内容。
delete[] pointer;
申请数组释放时注意防止内存泄漏
申请数组时注意pointer指针不能改变,否则无法记录内存地址。。。泄露。
PS:既然不能改变,我觉得干脆直接new一个常量好了。。Type const *pointer = new Type[size]....^_^ 不过不知道行不行。。。试试好了。。C++Primer第四版上P166说可以。