
C/C++集锦
BIG_GENERAL_DD
好好学习,天天向上.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类模板定义(重载运算符)
template class BigNumber{ long n;public: BigNumber (T i):n(i) { } BigNumber operator+(BigNumber b) { return BigNumber(n+b.n); }};有如上的类模板定义,已知b1、b2是BigNumber的两个对象,则下列表达式中错误的是(D)A、3+3 B、b1+原创 2017-12-27 11:00:45 · 3017 阅读 · 0 评论 -
C++学习(55)
1. class Eye {public:void Look(void);};组合是在新类中以原有类的对象作为数据成员,继承是在不改变现有的类的基础上,采用现有类的形式并在其中添加新代码,组合一般用于在新类中使用现有类的功能而不是他的接口的情况,就是新类用户看到的只是为新类所定义的接口。而继承则是用于在新类需要向基类转化的情况(多态),这也是组合和继承使用的最清晰的判断方法。结合原创 2017-06-27 22:42:18 · 454 阅读 · 0 评论 -
C++学习(60)
1. 在构造函数XB的下列定义中,正确的是(B) B XB::XB(int a,int b):Xa(a),y(b){}分析:引用A类型的变量,必须初始化列表。 2. 以下代码中,A的构造函数和析构函数分别执行了几次:10、10A *pa = new A[10];delete []pa;A*pa = new A[10]; 调用new分配原始未类型化的内存,在分配的内原创 2017-07-27 23:10:36 · 542 阅读 · 0 评论 -
C++学习(61)
1. 析构函数没有参数,无返回值。名字和类名相同。前面加一个~。2. 以下程序的K最终值为:90inti=10;intj=20;intk=3;K *=i+j’*=表示将第一个操作数的值与第二个操作数的值相乘;将结果存储在第一个操作数指定的对象中.而且根据运算符优先级:+优先级 大于*=优先级, 3.下面的C语言语句,哪一个可以把一个32位变量的最高位置为原创 2017-07-30 14:20:52 · 640 阅读 · 0 评论 -
C++学习(62)
1 C语言允许函数值尅下缺省定义,此时该函数值隐含的类型是整型。 2. 预定义的操纵算子使用成员函数控制格式化输入输出时,每个函数调用需要写一条语句,尤其是它不能用在插入或提取运算符的表达式中,而使用操纵算子,则可以在插入和提取运算符的表达式中控制格式化输入和输出。在程序中使用操纵算子必须嵌入头文件iomanip.h C++提供了大量的用于执行格式化输入/输出的流操纵算子。流操原创 2017-07-31 11:07:01 · 337 阅读 · 0 评论 -
C++学习(63)
1 float x与“零值”比较的if语句为:if(fabs(x)分析:folat类型的还有double类型的,这些小数类型在趋近于0的时候直接等于0的可能性很小,一般都是无限趋近于0.因此不能用==来判断。应该用|x-0|不可将浮点变量用“==”或“!=”与任何数字比较。 千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或原创 2017-07-31 21:22:37 · 519 阅读 · 0 评论 -
C++学习(64)
1 分析下列程序:#includeint main() {int i=3;printf("%d,%d\n",++i,++i);int j=3;printf("%d,%d\n",j+=2,j*=3);}分析:函数的参数是从右向左压栈的,输出时从栈顶开始,相当于: int i = 3; ++i; ++i; printf("%d,%d",i,i);所以是 5,5;再举一个例子原创 2017-08-01 14:07:10 · 362 阅读 · 0 评论 -
C++学习(56)
1.分析下述程序执行的结果:#includeusing namespace std;class cla{ static int n; public: cla() { n++; } ~ cla() { n--; } static int get_n() { return n; }};int cla::n=0; int main() {原创 2017-07-25 16:01:20 · 1601 阅读 · 0 评论 -
软件工程学习(2)
1、单例模式:Singleton的作用是保证在应用程序中,一个类Class只有一个实例存在。并提供全局访问。 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减原创 2017-05-25 22:49:44 · 665 阅读 · 0 评论 -
C++学习(45)
1.p1和p2都指向常量字符串,在常量区,所以不能对其进行操作;改为数组即可,但是用字符串初始化数组时要记得将数组长度加1,因为字符串默认的末尾有一个‘\0’;第二点要注意的是,strcat函数的p1要有足够的空间来容纳p1和p2连接后的串长。修改为以下代码将可以:char p1[7]="123";char p2[]="ABC";char str[50]="xyz";str原创 2017-06-15 11:11:34 · 428 阅读 · 0 评论 -
C++学习(44)
1.分析下列程序:#include#include#includeusing namespace std;int main(int argc,char **argv) { struct s{ int x:3; int y:4; int z:5; double a; }; cout<<sizeof(s); return 0;}分析:需原创 2017-06-14 12:44:34 · 217 阅读 · 0 评论 -
C++学习(39)
1.抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。 抽象类具有以下特性:1)抽象类不能实例化。2)抽象类可以包含抽象方法和抽象访问器。3)不能用sealed修饰符修饰抽象类,因为这两个修饰符的含义是相反的。采用sealed 修饰符的类无法继承,而abstract修饰符要求对类进行继承。4)从抽象类派生的非抽象原创 2017-06-11 10:19:04 · 236 阅读 · 0 评论 -
C++学习(52)
1. 分析下列程序:#includeusing namespace std;class Myclass { public: Myclass(inti=0) { cout<<1; } Myclass(constMyclass &x) {原创 2017-06-23 10:35:54 · 586 阅读 · 0 评论 -
C++学习(40)
1. 分析下列程序(1)#include#includeusing namespace std;int main() { int*(*a)[3][4]={0}; cout<<sizeof(*a);}(2)#include#includeusing namespace std;int main() { int*a[3][4]={0}; cout<<sizeof原创 2017-06-12 11:42:12 · 359 阅读 · 0 评论 -
C++学习(41)
1. 源码->(扫描)->标记->(语法分析)->语法树->(语义分析)->标识语义后的语法树->(源码优化)->中间代码->(代码生成)->目标机器代码->(目标代码优化)->最终目标代码。2. 源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件汇编阶段把 汇编语言代码/中间代码 翻译成目标机器指令。对于被翻译系统处理的每一个C语言源程序,都将最终原创 2017-06-13 11:14:41 · 314 阅读 · 0 评论 -
C++学习(42)
1.如果一个类中声明了纯虚函数,其派生类中没有对该函数定义,那该函数在派生类中仍为纯虚函数,凡是包含纯虚函数的类都是抽象类。通常重载函数调用的依据是函数名、参数类型、参数个数。 类的静态成员是属于类的而不是属于哪个对象的,因此可以说是所有对象所共有的。 内联函数是在编译时将目标代码插入的。 2.“子类”和“子类型”是不同的,替换原则只适合于"子类型"关系,而一般编程原创 2017-06-13 12:38:36 · 338 阅读 · 0 评论 -
C++学习(53)
1. 派生类继承了基类的私有成员,但是不能直接访问,只能通过派生类的友元函数访问。2. TURBO C中,int占2个字节,long int占4个字节;union联合体是个省内存的定义方法,里面的day,month,year被定义在一个2字节大小的空间。它的取值完全取决于编程人员最后一次对它的引用。 3. float类型(即IEEE754单精度浮点数格式)能表示的最大整数是原创 2017-06-25 21:40:41 · 476 阅读 · 0 评论 -
C++学习(54)
1.分析下述程序:#includeusing namespace std;int main() { intc=23; printf("%d\n",c&c); return0;}分析:&是位与运算符,将前后两个数对应相与。任何数与自身相与,保持不变。(&:同时取1才为1;|:至少有一个1才取1) 2.#includeusing namespace std;原创 2017-06-26 10:40:12 · 444 阅读 · 0 评论 -
C++学习(43)
1. 分析下列程序:出错。#include#include#includeusing namespace std;int main() { char*p1="123",*p2="ABC",str[50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n",str); return 0;}分析:原代码有错:p1和p2原创 2017-06-14 10:40:58 · 513 阅读 · 0 评论 -
链表学习(4)
1、某带链的队列初始化状态为front=rear=NULL,经过一系列正常的入队与退队操作后,front=rear=10.该队列的元素个数为:1.分析:队列为链栈时,除了初始构造皆为空外,当这两个指针再次相遇时,这个链队列的元素为一个。注意和循环队列区别。 2、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队出队操作时:队头队尾指针都可能要修改。原创 2017-05-16 13:08:39 · 1004 阅读 · 0 评论 -
C++学习(57)
1.若有 C 语言表达式 2+3*4+7/3, 以下选项中叙述正确的执行顺序是(B )。 A 先执行3*4=12,再执行7/3=2.5,最后执行2+12+2.5=16.5B 先执行3*4=12,再执行2+12=14,再执行7/3=2,最后执行14+2=16C 先执行7/3=2,再执行3*4=12,再执行12+2=14,最后执行2+14=16D 先执行2+3=5,再执行5*4=20,原创 2017-07-25 16:46:00 · 391 阅读 · 0 评论 -
C/C++学习(9)dynamic_cast<>强制转换
dynamic_cast,分为:1.子类向基类的向上转型(Up Cast)2.基类向子类的向下转型(Down Cast)其中向上转型不需要借助任何特殊的方法,只需用将子类的指针或引用赋给基类的指针或引用即可,dynamic_cast向上转型其总是肯定成功的。而向下转换时要特别注意:dynamic_cast操作符,将基类类型的指针或引用安全的转换为派生转载 2017-05-05 22:21:34 · 549 阅读 · 0 评论 -
树学习(3)
1、 非空的平衡二叉树中插入一个节点,原有节点中至少一个节点的平衡因子会改变。分析:一旦插入一个节点原先节点至少会有一个节点的平衡因子会改变。平衡因子=H左子树-H右子树,即使插入结点后不改变原二叉树的平衡性,平衡因子也会改变。 2、 已知一棵树的先序、中序、后序序列,还原这颗树需要?分析:还原树必须要知道包括中序序列在内的任意两种序列。即后序+中序、前原创 2017-05-16 12:03:27 · 667 阅读 · 0 评论 -
未定义行为
未定义行为是指C语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果;或者程序调用未定义行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至在另一个日期运行失败。当一个未定义行为的实例发生时,“什么事情都可能发生”,也许什么都没有发生。未定义行为就是运行结果不确定。eg:原创 2017-12-25 22:07:48 · 599 阅读 · 0 评论 -
链表中定义结点在C/C++中的区别
为了建立如图所示的存储结构(即每个结点含有2个域,data是数据域,next是指向结点的指针域),则在[]处应填写的选项是:Bstruct link {char data;[];}node;A、link next; B、struct link *next;C、link * next; D、struct link next;在C++语言中,B和C选项都可以;但在C语言原创 2017-12-25 22:24:06 · 2153 阅读 · 0 评论 -
C++中虚拟继承问题
#includeusing namespace std;class A{public: A(char *s) { cout<<s<<endl; } ~A(){}};class B: virtual public A {public: B(char *s1,char *s2):A(s1){ cout<<s2<<endl; }};class C:virtual p原创 2017-12-26 23:36:55 · 353 阅读 · 0 评论 -
测试(测试开发)类相关面试题for互联网
(1)你对测试的看法,有哪些测试方法?测试就是为了保证可靠性,有白盒和黑盒测试,黑盒测试有边界法等等方法。(2)你在做性能测试的时候是怎样进行测试的 请简单描述一下测试的流程?答:1.准备测试的环境(网络、范围等) 2.计划 设计 方案 3.测试执行,监控 4.问题分析,调优 5. 性能报告测试流程一般测试流程:1.需求分析阶段:只要就是对业务的学原创 2018-01-11 16:39:27 · 14397 阅读 · 0 评论 -
浅拷贝构造函数
#include using namespace std; class A{ int i;};class B{ A *p;public: B() { p= new A; } ~B(){ delete p; } /* B(const B& this) { p=this.p; } */};void sayHello(B b) {}原创 2017-12-27 10:09:39 · 350 阅读 · 0 评论 -
多维数组中指向的值
#include using namespace std; int main() { int a[2][2][3]={{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}}; int *ptr=(int *)(&a+1); printf("%d %d",*(int*)(a+1),*(ptr-1)); return 0;}输出原创 2017-12-27 10:52:33 · 250 阅读 · 0 评论 -
C/C++学习(1)面向对象的多态性问题、虚函数调用
题目来源:点击打开链接以下代码的运行结果为:class Base {public:Base() {echo();}virtual void echo() {printf(“Base”);}}; class Derived:public Base {public:Derived() {echo();}virtual void echo() {printf(“Derived原创 2017-05-05 13:30:50 · 537 阅读 · 0 评论 -
C++学习(66)
1 以下正确的是(B)A在C语言中,逻辑真值和假值分别对应1和0B关系运算符两边的运算对象可以是c语言中任意合法的表达式C对于浮点变量x和y,表达式:x==运算非法的,会出现编译错误D分支结构是根据算式表达式的结果来判断流程走向的分析:A 关系表达式和逻辑表达式的值 是布尔型:真或假(true or false),即0或1,但c语言没有布尔类型,以0为假,非0即真。B是合法原创 2017-08-31 08:55:36 · 765 阅读 · 0 评论 -
C++学习(58)
1. 在C++语言中,对函数参数默认值描述正确的是:D 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值。 2. 以下关于头文件说法正确的是(B)A. #include,编译器寻找头文件时,会从当前编译的源文件所在的目录去找B. #include“filename.h”,编译器寻找头文件时,会从通过编译选项指定的目录去找C. 多个源文件同时用到原创 2017-07-25 17:42:00 · 534 阅读 · 0 评论 -
C++学习(59)
1. char a[5],*p=a;以下说法正确的是 AA p=”abcd” Ba=”abcd”; C *p=”abcd”; D *a=”abcd”分析:p里面存的是数组a的首元素的地址,p是一个指针变量,指向字符型数据,指向字符变量,不是把“abcd”这些字符存放到p中,也不是把字符串赋给*p,只是把“abcd”的第一个字符的地址赋给指针变量p。 2. 指针变量的值是原创 2017-07-27 10:34:12 · 347 阅读 · 0 评论 -
C++学习(19)
1、 通过封装,对象的全部属性和操作结合在一起,形成一个整体;通过封装,一个对象的实现细节被尽可能地隐藏起来;(不可见)通过封装,每个对象都成为相对独立的实体; 2、 数值型常量有整型常量,实型常量,不论是整型常量还是实型常量都有正值和负值之分; 在C语言的预编译处理中,可以用符号名代表一个常量,定义时不必指定常量类型; 常量的定义就是常量是在程序运行过程中值不饿能原创 2017-05-25 13:11:57 · 696 阅读 · 0 评论 -
C++学习(20)
1、 #includeusing namespace std;int main(){ char *s="abcdefg"; s+=2; fprintf(stderr,"%d\n",s); return 0;}分析:stdout-标准输出设备(printf(".."))同stdout;stderr--标准错误输出设备搜索;两者默认向屏幕输出。但如果原创 2017-05-26 10:28:38 · 604 阅读 · 0 评论 -
C++学习(65)
1关于new运算符,错误的是DA可以用来动态创建对象和对象数组B使用它创建的对象和对象数组可以使用运算符delete删除C使用它创建对象时要调用构造函数D使用它创建对象数组时必须指定初始值分析:D 可以不指定初始值,调用默认构造函数进行默认初始化。int*x=new int();//不传值,默认初始化为0 2free释放内存之后,指针还指向原来的那块地址,需要我们设原创 2017-08-31 08:49:02 · 421 阅读 · 0 评论 -
C++学习(51)
1. 在C++语言中,下列说法正确的是(D)A inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序速度B 局部变量和全局变量不能重名C 静态局部变量内存是运行期分配的,存储在堆栈区D C++不是类型安全语言分析:A选项,内联函数与其他普通函数的区别是,内联函数在生成可执行文件时,其代码块是直接嵌入到调用处的,以此减少函数调用的开销提原创 2017-06-22 10:26:43 · 587 阅读 · 0 评论 -
C++学习(38)
1. 全局变量可以定义在可被多个.c文件包含的头文件中。 2. 下列程序输出:int i; for(i=0;i fork(); printf("-"); }分析:fork()系统调用的特性,fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,如果返回值>0,则是父进程(返回值是子进程的pi原创 2017-06-09 19:17:02 · 273 阅读 · 0 评论 -
C++学习(18)
1、编译下列程序,分析运行结果:#include#includeusing namespace std;void fun(int *p1,int *p2,int *s) { //s=(int *)malloc(sizeof(int)); //cout<<s<<endl; *s = *p1 + *(p2++);// cout<<*s;}int main() { int a[2原创 2017-05-24 22:41:35 · 584 阅读 · 0 评论 -
C++学习(21)
1、#includeusing namespace std;void foobar(int a,int*b,int **c) { int *p=&a; *p=101; *c=b; b=p;}int main(){ int a=1; int b=2; int c=3; int原创 2017-05-26 12:14:01 · 498 阅读 · 0 评论