天天看点

嵌入式每日学习心得2017.08.04

类成员变量的存储类型:

C语言:1、栈区(动太区) 2。堆区, 3.静态区

1、普通变量作为成员变量

2、指针变量作为成员变量

3、静态变量作为成员变量:

1、静态变量在程序调用时就已经分配好空间,2、在类外时必须初始化 3.对象共享静态变量(也就是实例化对象时,不会再分配静态空间) 4。构造函数的初始化列表是不能对静态成员变量初始化

初始化: 类型  类::静态变量=初始值;   这不是访问

3.1静态函数作为成员函数

1、静态函数属于类,不尾具体对象(属于所有该类的对象) 2、静态函数是不能访问非静态成员。

总结:静态成员属于类(也就是属于所有对象,也就是共享)

4、对象作为成为成员变量:

  注:成员对象的初始化只能由构造函数的初始化列表初始化。如果不显示去初始化成员对象,则系统默认添加无参构造方法。如果显示的调用构造函数,则调用函构造函数由形参列来匹配调用

 student::student():s() --调用s的无参构造函数

student::student(int id,const char* name,int c=0,int e=0,int m=0):id(id),s(c,e,m)  --调用s(int,int,int)构造函数

总结:构造函数就是用于初始化成员的空间(普通变量,指针变量,成员对象)

友元:

  友元函数(*):当某个函数需要访问某类的非公有成员(方法,属性)时,由于类的封装性,在类外不能访问,可以将此函数声明为此类的类友函数时。此函数就可访问此类的任何成员。

class 类

{

。。。

friend 声明;

。。。

}

注:优点:友元可以通过声明友元时,此函数访问所有成员

   缺点:破坏封装性。

  友元类:

运算符:只能识别基本类型(整型,浮点型,字符类型)的操作,不能直接识别复杂类型

重载运算符:可以通过“拓展”运算符来运算操作复杂类型。 --本质就是函数

     返回值 operator运算符(形参) 本质:就是函数

1、

+   - * /  双目运算符

成员函数: 返回值 operator+(形参&)

非成员函数:       返回值  operator+(形参1,形参2&)

2、重载下标未能:引用数组:

int buf[10]={1,2,3,4,};    buf[3]

   返回值  operator[](int);

总结1:

1、重载运算符时,不会改变运算的顺序。(操作数与被操作的顺序不会改变)

2、不会改变结合性。  

3、不会改变运算的优先级(与C语言中运算符优先一致)   1+2+3+4  ia+ib+ic+id

4、不会改运算符的特性。

5、如下运算是不能重载的:    .   ->    sizoef    ::    ? :    (已经在C++/C语言中明确作用)

发送消息:

类 ia,ib;

类 ic=ia+ib; //等价于  类ic=ia.operator+(ib);

继续阅读