GeekBand C++第一周学习笔记
C语言数据和处理这些数据的函数是分开的。
C++是把数据和处理这些数据的函数包在一块,称作class,相当于C里面的结构体,不过比结构体多了很多特性,而C++提供了很多关键字来支持这些特性。
C++的结构体和class差不多,只有一点点微小的差别。
C++将数据和函数包在一起怎么使用呢? 在将来用的时候,以包在一起的(class)这种为类型,创建对象,然后在对象里面进行处理。
前面提到过,C++的class最经典的分类是分为两种,带指针的和不带指针的,这会影响到后面的写法,影响深远。
当设计一个类时,如果里面有指针,那么就要非常小心。具体怎样小心呢?还不知道。。
设计类的时候,先考虑需要用到什么数据,然后再想下要用到什么函数
模板:先设计了一个复数类,里面的数据类型为double,这时候又需要处理int类型的复数,处理方法(函数)与之前设计好的double类复数一样,我们
不希望再重新设计一个处理int类型的类,因为这两个类大部分内容都是一样的,除了数据类型。这个时候,就需要用模板!!! 用模板的意思
就是设计类的时候不把数据类型写死,这样就告诉编译器什么类型都有可能,就看用的时候怎么用啦!!
内联函数:函数的实现在class本体内。
构造函数:C++创建一个对象的时候,有一个函数会被自动调用,这个函数就是构造函数。
默认参数每个函数都可以有。但是初始化列表只有构造函数才可以拥有。
在一个class里面可以有多个构造函数。
重载:相同名字的函数可以有多个。 比如构造函数。
const:设计类的时候,里面的成员函数分为会改变数据类型的,和不会改变数据类型的,,不会改变数据类型的,加上const!!!
因为如果不加const,万一创建一个const对象,那么就会出错。
不带指针的class多半不用写析构函数。
参数传递:最好都传引用,不要传值,因为传引用速度和指针一样快,4个字节。而传值的话,值有可能比较大,速度慢,浪费栈空间。 、
返回值的传递也尽量用 引用,但是返回的值是在函数中间定义的局部变量那就不能返回引用,因为函数结束后,局部变量消亡。
友元:
相同的class的各个不同的对象之间互为友元。
类设计的时候要注意:1.数据一定要放在private里面
2.参数尽可能的用引用来传。
3.返回值也尽可能用引用来传。
4.类里面的函数能加const的尽量加const
5.构造函数尽量用初始化列表
操作符重载: 在C语言里面,进行这种操作需要设计一个函数,但在C++里面,操作符就是一种函数,可以让我们重新定义的。
操作符有两种写法,一种是成员函数的写法,另一种是非成员函数的写法。