Geekband c++ 第一周(侯捷主讲)

来源:互联网 发布:淘宝排名突降 编辑:程序博客网 时间:2024/05/18 02:29

1.c++编程简介
学习c++的目标:养成正规,大气的编程习惯
c++的发展历史以及推荐书目
针对c语言来讲,数据和函数都是全局的,而c++面向对象的语言,主要是将数据和函数包装起来。
对于c++中类的讲解分为两部分:一个是类中不带指针的情况,另一个是类中带有指针的情况
c++代码的基本形式是:.h标准库+.h类的声明+.cpp main函数(后缀名可能会有不同)
本次主要讲解类中不带指针的情况。                                                               

2.头文件和类的声明

头文件中要包含:防卫式声明,类的前置声明,类的声明,类的定义。
类的声明中,防卫式声明非常重要。
在class body 中,又分为public,private,protected三个部分。
一般将数据的定义放在private中,成员函数声明放在public中。对于成员函数的定义可以选择放在class body里面或者外面。
这样我们会发现,对于不同的数据类型,可以进行相同的处理,函数的处理方式相同。
模版:
优点:如果定义不同的函数进行相同的操作会十分累赘,考虑使用模版。
template<typename T>
使用时,可直接使用complex<int> c;complex<double>c(1.1,2);
inline函数:
优点:类似于宏,效率高。
缺点:由编译器决定是否真的inline。
使用:在函数定义时,前面加inline字符。
访问级别:
类对象是不能访问private部分的。
const:

类的声明又包含class head和class body。

const放在函数声明中,只有在类成员函数中才能这样使用,表示类成员变量不能在该函数中被改变。需要认真考虑是否要加这个关键字。以尽量加为原则。

3.构造函数
  • 构造函数是与类名相同名称的函数,没有返回值。
  • 构造函数对成员数据赋初值是一种特殊形式(与赋值略有不同)。
  • 构造函数可以进行重载。
如果构造函数被放在private部分,例如单例。
表示这个类不允许被外界创造对象。
参数传递(返回值传递):
传递变量,传递引用
以尽量传递引用为原则。当传入的变量不希望被修改,要用const。
传递引用的优点:效率高,速度快。
友元函数:
友元函数打破了封装性,但是调用成员变量时速度快了,可以直接拿成员变量进行其他操作。
同一个class的各个对象互为友元!!!
总结:
  1. 数据一定放在private里面;
  2. 参数通过reference传;
  3. 返回值也尽量通过reference传;
  4. 类的body中尽量加const;
  5. 构造函数的特殊用法(初始化数据)。

4.参数传递
complex& complex::operator += (const complex& r);
return *this;
参数传递中什么时候传reference,什么时候传value?
比如做加法,有两种情况,一个是创建一个变量存放加好的数据,一个是将加好的数据存放在已有的变量中。第一种情况就不能选择return by reference。
操作符重载:
this:
所有的成员函数都隐藏了一个参数this,这个参数的位置根据编译器来决定。
为什么一定要有返回值,就要考虑c3 += c2 +=c1; 这种情况。

5.操作符重载与临时对象
函数可分为成员函数和非成员函数。<<不能写为成员函数。原因是<<是作用在左边,而左边为cout标准库的操作。
临时对象:
typename(),适合到下一行就结束生命的操作。
0 0
原创粉丝点击