为什么 学习 C++?
他的效率 比其他 面向对象 语言,
更快。
作用域,Scope 大括号
以 良好的方式, 编写 C++ class
- Class without pointer members
Complex , 没指针
不带指针的类, 多半不用写 析构函数。
复数, 包含 实部 和虚部。 - Class with pointer members
String, 有指针
字符串, 其实 是个 ptr, 指向一串字符。
学习 C++,
- 语言部分
- 标准库 部分
C++ 98
(1.0 ) 1998
C++ 11
( 2.0 ) 2011
STL, Standard Template Library.
C语言,
数据定义在 结构体中。类型。
数据变量, 都是 全局的。
各个函数 , 都可以 去处理数据。
C ++,
Class / Struct,
Data Members,
Member Functions.
把 数据 和 函数 包在一起。
Guard 防卫式声明
# ifndef
# define
# endif
{
条件 编译.
防止 在 一个 .cpp 里面,
include 同一个 .h 文件 多次。
而出现, 那个 .h 的声明 , 被重复出现。
}
Class Template 模版
template < typename T > 函数模板
构造函数 ctor 放在 private 区。
public 区, 放一个 单例。
不会改变的内容前面,
( get 方法 ),
实现前面,加 const.
参数传递
- pass by value 尽量不要传值。
整包 传过去。
Value 多大, 都传。
传的动作, 就是 压到 函数的 栈( Stack )里面。 - pass by reference ( to const )
有 取地址 符号。( & )
引用 在底部 就是一个指针。
传引用, 就相当于传指针。
传引用, 速度很快, 传递指针的 速度, 4个字节。
最好, 所有的 参数传递, 都传引用。
参数少于 4字节, 传value.
我们是 同一个东西,
函数一改, 就影响了 我。
解决:
pass by reference to const
C 可以传 指针。
我要传 这一包东西,
这包东西太大了,
我就把 这一包东西的 地址 , 传出去。
返回值 传递
- return by value
没有 by reference 好。
他比较差, 比较慢。 - return by reference ( to const )
尽量 这样做
用 reference 的 好处,
传递者 无需知道 , 接受者 是以 reference 形式接收。
用 point 来 pass value,
传的人 必须知道 现在传的是 什么东西, 要有一个 特殊符号。
操作符 重载, Operator Overloading
this, 调用者
所有的 成员函数, 一定带着一个 隐藏的 参数。
那个参数, 我没有写, 但是他在。
谁调用这个函数, 那个谁, 就是 this.
this , 是一个 指针。
编译器 ,把 operator 符号 ,
作用在 左边。
*ths, 是 指针所指的东西,
一个 object/ value.
看 function name ,
就知道
这是 成员函数, 还是 全局函数。
typename ( 临时对象)
等同于 int (sth )
临时对象, 他临时才要的。
他的生命 到下一行 ,就结束了。
negate 取反, 反向
+
正号, 还是 加法 ?
编译器 通过 参数, 识别。