嵌入式每日学习心得2017.08.07
来源:互联网 发布:如何将照片导入mac 编辑:程序博客网 时间:2024/06/02 04:15
类成员变量的存储类型:
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&)
add(a1,a2)
2、对象的赋值:当两个对象已经实例化,并相互赋值。
Class obj1,obj2;
赋值运算符 左值=右值
注:当两个对象的类型相同时(两个对象的空间),可以默认赋值。否则,不能赋值。
当用户不显示的添加重载赋值运算时,编译器会默认添加
不能在类外定义赋值重载运算符。
成员函数:
类对象& operator=(类对象);
2 object& object::operator=(object& o2)
63 {
64 if(NULL!=this->value) //先释放(当有成员指针变量且指向堆区)
65 delete this->value;
66 this->value=new int(*o2.value); //再申请
67
68 cout<<"重载="<<endl;
69 return *this;
70 }
3单目运算符:自增自减
前自增:++i (i)先自加,再取值(i) 结果:1 i=1
后自增:i++ 先取值(i),(i)再自加
重载运算符: a.operator++()
成员函数:
返回值 operator++()前自增 (不带形参) ++a
返回值 operator++(int);后自增(带形参) a++
总结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);
非成员函数:
返回值 operator++(类& 对象);// 前自加
返回值 operator--(类& 对象,int); // 后自减
类: 输入流的类名:istream/输出流的类名:ostream
输出对象: cout
输入对象: cin
重载输入输出流运算符:
输出流:<<数据 将指定数据插入输出流中(缓冲区),cout是将缓冲区的数据进行打印
ostream& operator<<(ostream& cout的别名,数据对象);
注:返回ostream&只是为了连续输出
输入流:>>
注:重载输入输出运算符是不能由成员方法来实现的(只能由非成员函数来实现)
work:
1/友元函数:实现相减
2/实现string中的 +
3、实现Link类中重载运算符=
注:引用只能是变量的别名,不能是常量的别名。
int a=100;
//fun(a);
fun(100);
//对常进行引用
int& p=100;
p=1000;
100=1000;
4、重载<< 实现对Link类的输出
Link l1;
cout<<l1<<endl;
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&)
add(a1,a2)
2、对象的赋值:当两个对象已经实例化,并相互赋值。
Class obj1,obj2;
赋值运算符 左值=右值
注:当两个对象的类型相同时(两个对象的空间),可以默认赋值。否则,不能赋值。
当用户不显示的添加重载赋值运算时,编译器会默认添加
不能在类外定义赋值重载运算符。
成员函数:
类对象& operator=(类对象);
2 object& object::operator=(object& o2)
63 {
64 if(NULL!=this->value) //先释放(当有成员指针变量且指向堆区)
65 delete this->value;
66 this->value=new int(*o2.value); //再申请
67
68 cout<<"重载="<<endl;
69 return *this;
70 }
3单目运算符:自增自减
前自增:++i (i)先自加,再取值(i) 结果:1 i=1
后自增:i++ 先取值(i),(i)再自加
重载运算符: a.operator++()
成员函数:
返回值 operator++()前自增 (不带形参) ++a
返回值 operator++(int);后自增(带形参) a++
总结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);
非成员函数:
返回值 operator++(类& 对象);// 前自加
返回值 operator--(类& 对象,int); // 后自减
类: 输入流的类名:istream/输出流的类名:ostream
输出对象: cout
输入对象: cin
重载输入输出流运算符:
输出流:<<数据 将指定数据插入输出流中(缓冲区),cout是将缓冲区的数据进行打印
ostream& operator<<(ostream& cout的别名,数据对象);
注:返回ostream&只是为了连续输出
输入流:>>
注:重载输入输出运算符是不能由成员方法来实现的(只能由非成员函数来实现)
work:
1/友元函数:实现相减
2/实现string中的 +
3、实现Link类中重载运算符=
注:引用只能是变量的别名,不能是常量的别名。
int a=100;
//fun(a);
fun(100);
//对常进行引用
int& p=100;
p=1000;
100=1000;
4、重载<< 实现对Link类的输出
Link l1;
cout<<l1<<endl;
阅读全文
0 0
- 嵌入式每日学习心得2017.08.07
- 嵌入式每日学习心得2017.08.01
- 嵌入式每日学习心得2017.08.02
- 嵌入式每日学习心得2017.08.03
- 嵌入式每日学习心得2017.08.04
- 嵌入式每日学习心得2017.08.08
- 嵌入式每日学习心得2017.08.09
- 嵌入式每日学习心得2017.08.10
- 嵌入式每日学习心得2017.08.14
- 嵌入式每日学习心得2017.08.15
- 嵌入式每日学习心得2017.08.17
- 嵌入式每日学习心得2017.07.07
- 嵌入式每日学习心得 线程
- 嵌入式每日学习心得2017.07.08
- 嵌入式每日学习心得2017.07.10
- 嵌入式每日学习心得2017.07.11
- 嵌入式每日学习心得2017.07.12
- 嵌入式每日学习心得2017.07.13
- 需求管理三步法
- Volley原理和Okhttp原理
- FTP学习1_FTP命令字和响应码解释
- Python 之study
- 09springmvc异常处理-抛出异常-异常测试
- 嵌入式每日学习心得2017.08.07
- Go语言学习笔记 --- slice切片
- python爬虫04
- 第二天:勇于踏出去
- Poj 1502 MPI Maelstrom (Dijkstra
- node.js 探索之路(概念进阶)
- Android 完整漂亮问卷、试卷 -- 支持单选、判断、不定项
- 二叉树的存储和遍历
- 561. Array Partition I