GeekBand C++面向对象高级编程(上)一

目标:培养正规大气的编程习惯。


本周关键点:防卫式声明、初始列、pass by value vs. pass by reference、const、操作符重载


一、C++编程简介


1、Class经典分类:带Pointer和不带Pointer。两种分类在思考上截然不同。 


2、
2.1、对于单一Class的设计(Object Based基于对象)
2.2、设计多个对象,他们相互之间有关联(Object Oriented面向对象)
Class直间的关系:
--继承(inheritance)
--复合(composition)
--委托(delegation)


3、C++学习内容:C++语言和C++标准库


二、头文件与类的声明
1、与C语言的函数和数据做比较。
C语言没有对象概念,数据都是全局变量; 
C++对数据和函数进行了分装。(Class和struct的区别?)


2、C++关于数据和函数
类-->对象有数据和函数,数据可以有很多份,但函数只有一份!??


3、C++ programs代码基本形式
*.h:头文件;*.cpp:主程序;#include<标准库.h>;#include"非标准库.h";


4、头文件中的防卫式声明
#ifndef __COMPLEX__
#define __COMPLEX__
//防止重复的Include
#endif


5、头文件的布局
-1:防卫式声明
0:前置声明
1:类声明
2:类定义(实现)


6、Class声明
class classname
{
public:
//构造函数
//其他函数
private:
//数据
//友元函数(也可能没有)
}


7、class template(模板简介)


三、构造函数
1、类的函数可以在class body内定义,也可以在body内声明,在body外定义。
2、inline(内联函数):(在body内定义或者body外定义的函数前加inline)(只是一个建议作用)
3、access level(访问级别):public和private、protected(private:数据部分)
4、constructor(ctor,构造函数):new动态的方式创建一个对象,得到对象指针。
4.1、函数名与类名相同;4.2、可以有参数;4.3、可以有默认值;4.4、无返回值类型;4.5、(技巧)初值列;
4.6、构造函数可以overloading(重载)。
5、把构造函数放入private区域,类不允许被外界创建对象。
Singleton(单例模式):静态函数,静态数据。 
6、析构函数:不带指针的类多半不需要析构函数。


四、参数传递与返回值
1、const member functions(常量成员函数):在函数名的后边加 const。
如果一个函数不会改变对象数据内容,就要加const!
不加就可能出问题,如果创建的对象被标记为const,如果此时,该对象调用未被标记为const的函数,编译器会报错。(见课件)
const 扩大了函数的使用范围,限制了函数的功能(权限)。


2、参数传递:pass by value vs. pass by reference(to const)
返回值传递:return by value vs. return by reference(to const)(尽量return by reference:返回值不是Local Var)


3、friend(友元):可以访问对象private成员。
3.1、相同class的各个object互为friends(友元)


五、操作符重载 与 临时对象
1、操作符是一种函数。操作符“+”指的是相加还是正号,要根据参数区分;
2、operator overloading(操作符重载-1,成员函数)this(任何成员函数都有一个this Pointer)
3、return by reference时,传递至无需知道接收者是以reference形式接收!return by reference很强悍,不在乎性别,男女通吃!
3、temp object(临时对象)用法:typename();返回临时对象时,函数返回值不能是 reference。它是local object
4、operator overloading(操作符重载-2,非成员函数)(无this)
5、operator <<为什么不能写成成员函数啊? 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值