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的各个对象互为友元!!!
总结:
- 数据一定放在private里面;
- 参数通过reference传;
- 返回值也尽量通过reference传;
- 类的body中尽量加const;
- 构造函数的特殊用法(初始化数据)。
4.参数传递
complex& complex::operator += (const complex& r);
return *this;
参数传递中什么时候传reference,什么时候传value?
比如做加法,有两种情况,一个是创建一个变量存放加好的数据,一个是将加好的数据存放在已有的变量中。第一种情况就不能选择return by reference。
操作符重载:
this:
所有的成员函数都隐藏了一个参数this,这个参数的位置根据编译器来决定。
为什么一定要有返回值,就要考虑c3 += c2 +=c1; 这种情况。
5.操作符重载与临时对象
函数可分为成员函数和非成员函数。<<不能写为成员函数。原因是<<是作用在左边,而左边为cout标准库的操作。
临时对象:
typename(),适合到下一行就结束生命的操作。
0 0
- Geekband c++ 第一周(侯捷主讲)
- Geekband c++ 第二周(侯捷主讲)
- GeekBand--第一周分享
- GeekBand-第一周分享
- GeekBand第一周开发
- 【GeekBand】第一周课程笔记
- C++面向对象高级编程(下)第一周-Geekband
- geekband android #5 第一周分享(初识Android)
- GeekBand C++第一周学习笔记
- 极客班GeekBand C++第一周笔记
- GeekBand C++第一周学习感悟
- GeekBandboolanC++ 笔记第一周
- GeekBand C++ 设计模式 第一周笔记
- GeekBand笔记-《C++设计模式》第一周
- (GeekBand)C++面向对象高级编程(上)第一周笔记(1)
- (GeekBand)C++面向对象高级编程(上)第一周笔记(2)
- (GeekBand)C++面向对象高级编程(上)第一周测试
- Geekband C++面向对象高级编程(上) 第一周笔记 暗影行者
- Java反射机制及单利模式、工厂方法
- Android——屏幕适配与多语言支持
- Spring的bean管理
- 第四十讲项目2——【水仙花数】
- 易语言较稳定的发信写法
- Geekband c++ 第一周(侯捷主讲)
- 金融项目java开发_BigDecimal(解决计算精度问题)
- 2017 Tencent实习编程题
- eclipse Kepler tomcat内存溢出解决方案
- Android 4.4.2 横屏应用如何隐藏状态栏和底部虚拟键
- POJ 3487 The Stable Marriage Problem(稳定婚姻问题)
- Http协议
- 软件测试方法大汇总
- MySql安装与使用图文教程