记录,待总结
2016-06-13 00:00
183 查看
1.关于函数地址
解释:代码中输出的不是函数的地址。事实上没有什么通用的方法可以得到成员函数的地址。cout不知道怎么输出成员函数的地址,于是将成员函数的地址转换为另一个类型(即bool型)输出。成员地址均非零,因此输出1。
2.char (*(*x[3])())[5],x是什么类型?
参考
http://topic.csdn.net/u/20120926/10/6b423fa9-e7c9-4584-b7b7-63607657e21d.html?54424
*(short *)&byte[0]是什么意思?
参考
http://topic.csdn.net/u/20120927/16/03b87825-0650-43c7-b3c1-ef955cfc863c.html?9294
3.结构体的赋值:
people Jack = {180.5, 179.2, "Jack", "济南"};
Mike = Jack;
4.一个类的成员变量列表中包含另一个类的对象,叫做包含(包容)。
10.传递数组的3种方式
1)void func(int a[]);
2)void func(int a[5]);
3)void func(int *a);
输出:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
5.
x和k共用一个存储单元,语句a.k=0;覆盖掉了a.u.x的值。
6.delete和delete[]的区别:
delete p 是删除释放一个单元,delete [] p 是释放 多个单元,具体的数据目是查系统的分配表得到的。
对于内置类型来说,delete和delete []是一样的
事实上new和delete都是两步操作,分配(释放)堆内存和调用构造(析构)函数,对于堆内存的释放,确实不需要做额外的事情,delete和delete []无差别,区别就在于调用析构函数这一步,如果用delete只会调用第一个对象的析构,只有调用delete[]才会调用全部的析构
11.基类的虚函数不进行实例化,就是抽象类。抽象类又叫ADT,它不能用来创建具体的对象
有纯虚函数的类都是抽象类
从抽象类派生出的新类必须为每个纯虚函数赋予功能,否则仍只是一个抽象类
不能定义一个抽象类的对象,只能定义一个指向抽象类的指针
指向抽象类的指针可以动态地指向其子类的对象,从而实现程序的多态
12.virtual float length() = 0;
像这个在虚函数后面加个“=0”,就是纯虚函数
纯虚函数彻底无任何功能,也不能直接调用,只能被子类继承并赋予新功能后才能使用
13.在一个类中定义了一个新的类型,这个类型只能在该类用使用。新类型称为嵌套类
14.endl在执行时,做两件事情:
1)输入'\n'
2)刷新缓冲区flush()
解释:执行换行符\n与执行结束符endl,最大的区别在处理文件上,以文件输出流(ofstream)为例。
当流的缓冲区未满时,执行'\n'是不会马上写到文件里。但是执行endl会强行把缓冲区里的内容写入文件中。
15.输出数据到文件的步骤:
1)包含头文件stream
2)建立ofstream对象:ofstream ocout;
3)将对象与文件关联:ocout.open("123.txt");
4)使用该对象输出数据:ocout<<"abc";
5)关闭与文件的连接:ocout.close;
16.读取文件中数据的步骤:
1)包含头文件stream
2)建立ifstream对象:ifstream icin;
3)将对象与文件关联:icin.open("123.txt");
4)使用该对象输入数据:icin>>temp;
5)关闭与文件的连接:icin.close;
17.将数据输出到文件时,可以选择两种输出方式:
1)二进制:空间小,速度快,精度高
2)文件:便于阅读,可直接编辑,可移植性强
18.同时打开文件的数目跟所操作系统而定,一般20个左右
class A { public: void f() { int f = 0; } void h() { int h = 0; } virtual void g() = 0; }; int main() { cout<<&A::f<<endl; // 输出结果:1 cout<<&A::h<<endl; // 输出结果:1 cout<<&A::g<<endl; // 输出结果:1 return 0; }
解释:代码中输出的不是函数的地址。事实上没有什么通用的方法可以得到成员函数的地址。cout不知道怎么输出成员函数的地址,于是将成员函数的地址转换为另一个类型(即bool型)输出。成员地址均非零,因此输出1。
2.char (*(*x[3])())[5],x是什么类型?
参考
http://topic.csdn.net/u/20120926/10/6b423fa9-e7c9-4584-b7b7-63607657e21d.html?54424
*(short *)&byte[0]是什么意思?
参考
http://topic.csdn.net/u/20120927/16/03b87825-0650-43c7-b3c1-ef955cfc863c.html?9294
3.结构体的赋值:
people Jack = {180.5, 179.2, "Jack", "济南"};
Mike = Jack;
4.一个类的成员变量列表中包含另一个类的对象,叫做包含(包容)。
10.传递数组的3种方式
1)void func(int a[]);
2)void func(int a[5]);
3)void func(int *a);
void func1(int a[], int n); void func2(int a[5], int n); void func3(int *a, int n); int main() { int a[10], i; for(i = 0; i < 10; i++) a[i] = i + 1; func1(a, 10); func2(a, 10); func3(a, 10); return 0; } void func1(int a[], int n) { int i; for(i = 0; i < n; i++) cout<< a[i] << ' ' ; cout<<endl; } void func2(int a[5], int n) { int i; for(i = 0; i < n; i++) cout<< a[i] << ' ' ; cout<<endl; } void func3(int *a, int n) { int i; for(i = 0; i < n; i++) cout<< a[i] << ' ' ; cout<<endl; }
输出:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
5.
#include<stdio.h> union myun { struct { int x, y, z; }u; int k; }a; int main() { a.u.x=4; a.u.y=5; a.u.z=6; a.k=0; printf("%d\n",a.u.x); }分析:输出0
x和k共用一个存储单元,语句a.k=0;覆盖掉了a.u.x的值。
6.delete和delete[]的区别:
delete p 是删除释放一个单元,delete [] p 是释放 多个单元,具体的数据目是查系统的分配表得到的。
对于内置类型来说,delete和delete []是一样的
事实上new和delete都是两步操作,分配(释放)堆内存和调用构造(析构)函数,对于堆内存的释放,确实不需要做额外的事情,delete和delete []无差别,区别就在于调用析构函数这一步,如果用delete只会调用第一个对象的析构,只有调用delete[]才会调用全部的析构
11.基类的虚函数不进行实例化,就是抽象类。抽象类又叫ADT,它不能用来创建具体的对象
有纯虚函数的类都是抽象类
从抽象类派生出的新类必须为每个纯虚函数赋予功能,否则仍只是一个抽象类
不能定义一个抽象类的对象,只能定义一个指向抽象类的指针
指向抽象类的指针可以动态地指向其子类的对象,从而实现程序的多态
12.virtual float length() = 0;
像这个在虚函数后面加个“=0”,就是纯虚函数
纯虚函数彻底无任何功能,也不能直接调用,只能被子类继承并赋予新功能后才能使用
13.在一个类中定义了一个新的类型,这个类型只能在该类用使用。新类型称为嵌套类
14.endl在执行时,做两件事情:
1)输入'\n'
2)刷新缓冲区flush()
解释:执行换行符\n与执行结束符endl,最大的区别在处理文件上,以文件输出流(ofstream)为例。
当流的缓冲区未满时,执行'\n'是不会马上写到文件里。但是执行endl会强行把缓冲区里的内容写入文件中。
15.输出数据到文件的步骤:
1)包含头文件stream
2)建立ofstream对象:ofstream ocout;
3)将对象与文件关联:ocout.open("123.txt");
4)使用该对象输出数据:ocout<<"abc";
5)关闭与文件的连接:ocout.close;
16.读取文件中数据的步骤:
1)包含头文件stream
2)建立ifstream对象:ifstream icin;
3)将对象与文件关联:icin.open("123.txt");
4)使用该对象输入数据:icin>>temp;
5)关闭与文件的连接:icin.close;
17.将数据输出到文件时,可以选择两种输出方式:
1)二进制:空间小,速度快,精度高
2)文件:便于阅读,可直接编辑,可移植性强
18.同时打开文件的数目跟所操作系统而定,一般20个左右
相关文章推荐
- 算法导论-13-3-AVL树
- g++/ld中的符号重定义
- 算法导论 第22章 图算法 22.2 广度优先搜索
- 淘宝技术类2011年校招笔试题
- 记录,待总结
- static 关键字的用法(c语言)
- NanUI for Winform 使用示例【第二集】——做一个所见即所得的Markdown编辑器
- mvc项目,导出到Excel,中文显示乱码
- 处理标签和urlencode相关的东西
- curl命令的使用
- 网站优化过程中的IDC因素不可忽视
- OpenSessionInViewFilter原理以及为什么要用OpenSessionInViewF
- 真正的开源网校系统,你知道哪几个?
- jvm学习-JDK工具
- centos升级git与及通过git通过ssh克隆代码
- 开源JEE企业通用框架 (Bootstrap javascript spring boot)
- iPhone html5页面 手机号码不显示,显示一下后又消失解决办法
- iPhone上关于相机拍照的图片反转90度的问题
- Day2-HTML概述
- As新建一个module形式的第三方library