云课堂C++开发工程师(一)

2016-05-15  本文已影响0人  mengkui

————————2016.5.15更新:忘了提交作业,以后一定要记得————————

侯捷大师关注以下几点:


4.1 数据一定放在private;

4.2 参数尽可能pass by reference,看状况加const;

4.3 返回值尽量pass by reference;

4.4 类的本体中尽量加const,避免报错;

4.5 构造函数尽量写初值列initialization list;

C与C++区别


C语言包含变量函数,其中数据都是全局的,可以被所有函数调用。

C++将数据和函数包在一起,通过面向对象的方式,来划分变量和函数的使用范围。

这两周的课程主要讲解两种类:复数——不带指针的类object based,字符串——带指针的类object oriented。

C++编译基本形式


C++由头文件和实现文件组成,头文件用于声明函数和变量,头文件一般是.h结尾,实现文件一般是.cpp结尾。但是这些不是强制性的,也就是说头文件可以不是.h结尾。

防卫式声明


防卫式声明可以避免重复include的动作:

#ifndef    __MYFUNCTION__

#define   __MYFUNCTION__

\\0.前置声明,1.类声明,2.类定义

#endif

语法(public / private)


\\class head

class complex

\\class body

{

public:

构造函数

运行:cout<<c1.function();

private:

声明数据,但是不可以被调用

友元函数

protected:

}

模板class template


在类中(private)定义一个未知类型“T”,在定义时被指定不同的数据类型。

内联函数inline


内联函数运行比较快,可以在本体内(public)定义,可以在本体外定义inline “function”。

构造函数constructor


构造函数和类名称相同,拥有参数,也可以有默认实参default argument,没有返回值类型。

初值列initialization list效率高:

complex (double r=0, double i=0): re(r), im(i) {}

重载overloading


3.1 函数名称相同,但是参数不同,可以重载,比如一个赋值函数和一个取值函数。

3.2 函数重载常发生在构造函数。

3.3 但是函数名称相同,有默认参数和无参数的两个函数不能重载。

创建对象时会调用构造函数


complex c1(1,2);

complex c2;

动态创建复数得到指针

complex* p = new complex(1,2);

析构函数(不带指针的类不需要)


私有区的构造函数-单例singleton


不允许外界创造对象,我们可以在类内部实例化一个对象,并将对象设置为static,这样的话,我们可以得到一个单例。

常量成员函数constant member function


函数不改变数据的函数要加const,在小括号后大括号前加const。

变量前const指其不能改变变量。

参数传递


pass by value || pass by reference (to const)

尽量传引用,包括参数传递和返回值类型:引用在底部就是指针,传递一样快,四个字节。

如果不希望函数改变引用的参数,需加const!!!

友元函数friend


声明在private中,定义在本体外可以直接拿其中的私有值:ths->c1.re。

本体外其他函数必须通过取值函数等函数拿私有值。

本体内的函数可以直接拿私有值c1.re,因为本体内相同class 的哥哥objects 互为friend。

class body 外的各种定义definitions


什么情况下可以pass by value,什么情况下可以pass by reference

函数必须创建地方来放--pass by value,其他可以pass by reference

操作符重载


重新定义其他类型数据的运算(+,+=),可以写成:

1.类内的成员函数,可以直接使用private数据,成员函数都带有隐藏参数this,但是不要在参数列写出来

2.本体外的非成员函数,

复习课


评分标准


上一篇下一篇

猜你喜欢

热点阅读