c期末复习资料

合集下载

C语言期末复习资料

C语言期末复习资料

选择题1、以下不是C语言基本数据类型的是D。

A.字符型B.C.整型D.构造类型2、以下B是八进制数。

A.1X12 B.123C.1001 D.01233、Turbo C中,char类型变量所占字节数是B。

A. 2 B. 1C. 3 D. 44、C语言提供的合法的数据类型关键字是B。

A.longer B.shortC.integer D.character5、C语言中运算对象必须是整型的运算符是A。

A.%= B.==C.+= D.*=6、下面关于字符串和字符常量的叙述中错误的是C。

A.字符常量由单引号括起来,字符串常量由双引号括起来B.字符常量只能是单个字符,字符串常量可以含一个或多个字符C.字符常量占一个字节的内在空间,字符串常量占的内在字节数为字符串中字符数D.可以将一个字符常量赋予一个字符变量,但不能将一个字符串常量赋予一个字符串变量7、以下程序的输出结果是D。

main(0{ int m = 10, n = 3;printf( " %d\n ", n = m / n ) ;}A.10 B.11C.13 D. 38、若以下变量均已正确说明为char类型,要给x、y和z输入数据,正确的是B。

A.scanf ( x, y, z );B.scanf ( "%c%c%c", &x, &y, &z ) ;C.scanf ( "%C%C%C", x, y, z ) ;D.scanf ( "%c%c%c", x, y, z ) ;9、以下程序的输出结果是C。

char c1, c2;c1=65; c2 = 65 + 32 + 1 ;printf ( "%c, %c ", c1, c2 ) ;A.a, B B.A, BC.A, b D.a, b10、以下程序的输出结果是C。

#include "stdio.h"#include "math.h"main(){ int a=3, b=9 ;float y, x=1.2 ;y= ( a+b ) / sqrt ( b ) * x ;printf ( "%\n", y ) ; }A. 1.000000 B. 1.400000C. 4.800000 D. 1.90000011、以下程序段的输出结果是7 6 7。

c语言期末复习资料3

c语言期末复习资料3

1.C程序的源程序由预处理命令和( )组成。

(A)函数(B) 语句(C) 保留字(D) 标识符2. 下面程序段中,与if(x%2)中的x%2所表示条件等价的是( )。

scanf("%d",&x);if(x%2) x++;(A)x%2==0 (B) x%2!=1 (C) x%2!=0 (D) x%2==13. 执行下面的C语句序列后,变量b的值是( )。

int a,b,c; a=b=c=1; ++a||++b&&++c;(A) 错误(B) 0 (C) 2 (D) 14. 设有C语句int a[3][4];,则每次移动过a数组一行元素的指针变量定义形式是( )。

(A)int *p; (B)int **p;(C)int (*p) [4]; (D)int *p[4];5.设有整型变量a, 实型变量f,双精度型变量x,则表达式10+'b'+x*f值的类型为( )。

(A) int (B) float (C) double (D) 不能确定6.C语言中规定,函数调用中用简单变量做实参时,它和对应形参之间的数据传递方式是( )。

(A)地址传递(B)单向值传递(C)有实参传给形参,再由形参传回给实参(D)由用户指定传递方式7.下面程序的输出是()。

#include <stdio.h>void main(){int x=10,y=3;printf("%d\n",y=x/y);}(A)0 (B)1 (C)3 (D)不确定的值8.执行下面的程序段后,B的值为()。

int x=35;char z='A';int B;B=((x&15)&&(z<'a'));(A) 0 (B) 1 (C) 2 (D) 39.以下程序的输出结果为()。

#include <stdio.h>void main(){int i=0;for(;;)if(i++==5)break;printf("%d\n",i);}(A) 0 (B) 5 (C) 6 (D) 前3个选项都错10.已知:char s[4] = "cba"; char *p; 执行语句序列p =s;printf("%c\n",*p+1);后,其输出为()。

c语言期末复习资料

c语言期末复习资料

c语言期末复习资料C语言是计算机科学中非常基础的一门编程语言,是程序员必须掌握的技能之一。

由于其简单易学的特点和广泛的应用范围,越来越多的人开始学习和使用C语言。

期末考试是C语言学习过程中的重要节点,为了帮助考生顺利通过考试,本文整理了一些C语言期末复习资料以供参考。

一、基础知识1.变量和数据类型C语言中的变量用于存储程序中使用的数据,数据类型是指变量所代表的数据的类型。

常见的C语言数据类型包括整型、浮点型、字符型、布尔型等。

掌握变量和数据类型的定义和使用是C 语言学习的第一步。

2.运算符和表达式C语言中的运算符用于对变量进行运算和操作,包括算术运算符、关系运算符、逻辑运算符等。

表达式是由变量和运算符组成的代码段,用于对变量进行操作和计算。

掌握运算符和表达式的使用和规则是C语言学习的基础。

3.条件语句和循环语句条件语句和循环语句是C语言中的两种重要的控制结构。

条件语句根据条件的真假来执行不同的代码段,常见的条件语句包括if语句和switch语句。

循环语句用于重复执行同一个代码段,常见的循环语句包括for循环、while循环和do-while循环。

掌握条件语句和循环语句的使用和应用是C语言学习的重要环节。

二、进阶技巧1.字符数组和字符串字符数组和字符串是C语言中非常常用的数据类型,用于处理字符和文本。

字符数组是由若干个字符组成的数组,字符串是由若干个字符组成的字符串常量。

掌握字符数组和字符串的定义和使用,能够更好地处理文本和数据输入输出等问题。

2.函数和指针函数是C语言中的重要的模块化编程方法,函数将程序的功能分解为若干个具有特定功能的独立模块。

指针是C语言中的重要的数据类型,它存储变量的内存地址,常用于访问复杂数据结构和实现高效的内存管理。

掌握函数和指针的使用和细节能够更好地组织程序和提高程序的执行效率。

3.结构体和文件操作结构体是C语言中用于组织复杂数据结构的数据类型,常用于存储各种类型的数据记录。

C语言程序设计基础知识期末复习2023年修改整理

C语言程序设计基础知识期末复习2023年修改整理

C语言程序设计基础知识期末复习一、 C语言与算法1.程序:一组计算机能识别和执行的指令。

2.C语言的特点:运算符丰富(共有34种运算符)、数据类型丰富、具有结构化的操纵语句。

3.C语言程序的结构特点:(1).一个程序由一个或多个源程序文件组成:一个源程序文件中能够包括三个部分:预处理指令、全局声明、函数定义(2).函数是C程序的要紧组成部分:一个C程序是由一个或多个函数组成的必须包含一个main函数(只能有一个);每个函数都用来实现一个或几个特定功能;被调用的函数能够是库函数,也能够是自己编制设计的函数。

(3).一个函数包括两个部分函数首部和函数体(声明部分:定义在本函数中所用到的变量;对本函数所调用函数进行声明;执行部分:由若干个语句组成,指定在函数中所进行的操作)(4). 程序总是从main函数开始执行(5). C程序对计算机的操作由C语句完成(6.)数据声明和语句后来必须有分号(7.)C语言本身不提供输入输出语句(8.)程序应当包含注释,增加可读性4、算法(1)算法+ 数据结构= 程序(2)顺序结构、抉择结构、循环结构是表示一个良好算法的基本结构(3)算法的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性(4)算法流程图:一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。

流程线不要忘记画箭头,否则难以判定各框的执行次序。

算法流程图的结构特点:只有一个入口;只有一个出口(一个推断框有两个出口;一个抉择结构只有一个出口)结构内的每一部分都有机遇被执行到。

也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它;结构内不存在“死循环”。

二、顺序结构设计5、标识符:用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。

C语言对标识符的规定:(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线(2)长度:在TC中最多允许32个字符,建议不要超过8个假如系统规定标识符长度为8,那样x1234567A和x1234567B会被视为同一标识符。

C语言程序设计期末复习

C语言程序设计期末复习

②doudb!le=
float
f &&
int
(i+1)
int
③dou4b.0le
int
*i
char
+ c double
【14】 A) double, double, double (或float)
B) int, double, char
✓C) int, int, double (或float) D) unsigned, unsigned, int
② 其他可打印(可显示)的字符,如汉字等自然语言 符号(作为字符串的内容)
[注意] C/C++语言是区分大小的语言 !
(详见P377 附录B)
8
zxl.xmu.2014
关键字
关键字/保留字 —— C语言程序中有特殊含义 的英文单词,主要用于构成语句、定义存储类 型和数据类型。
✓ C语言中仅有37个关键字
else continue;
printf("%4d",n); }
break; 仅输出: 100 }
输出【:131】00A1)01fo1r0(3n=1100401;0(n6%1037)&…&…n<=200; n++) printf("%4d",n); B) for (n=100; (n%3)||n<=2仅00输; n出++:) p1ri0n0tf1("0%1 4d",n);
非法字符举例:M.D.John,$123,1AB,d e
11
zxl@xmu
运算符(共34种,详见P378《附录D》)
• 目/元——运算时所需运算对象(操 作数)的个数。

C语言期末考试复习资料

C语言期末考试复习资料

C语言期末考试复习资料C语言复习摘要一、数据类型:基本类型(整型、实型、字符型、枚举类型),构造类型(数组、结构体、共用体)、指针类型、空类型。

基本类型也叫简单类型,构造类型也叫复杂类型二、标识符:标识符只能由字母、下划线、数字构成,且必须以字母或下划线开头,且对字母的大小写敏感。

三、常量1、整型常量,如:32,0x32,0X32,0x3f,0xea,8L,8l,0672、实型常量,如:3.14,1e23,0.8E8,0.8E-8,0.8E+83、字符常量,如:‘a’,‘\n’, ‘\w’,‘\\’,‘\0’4、字符串常量,如:“windows”,“a”,(其赋值表达式和赋值语句中其本质是一个地址常量)5、地址常量,若有定义:int k,a[10];char s[20];则:&k,a,s,NULL都是地址常量6、符号常量,用宏定义实现,如:#define PAI 3.14159267、以下都是非法常量:0xfg,3.1e2.8,‘aw’,‘w\’,0x,068四、表达式(要点:先确定表达式的类型,再确定表达式的值的类型,最后确定表达式的值):1、算术表达式(应注意变量类型的自动转换——原则:低级向高级转换):(1)、整型表达式:参加运算的都是整型量,结果也是整型数。

如:x+20*9+3(2)、实型表达式:参加运算的都是实型量,运算过程中先转换成double型,结果也是double型。

如:x+20*9+3.0,x+20*9+sqrt(3)2、赋值表达式:将赋值运算符“=”右边的值赋给左边的变量,其值为赋值后左边变量的值,类型为左边变量的类型。

如:x=3(注:若x为整型变量,则该表达式的值为整型,若x实型变量,则该表达式的值为实型)3、逻辑表达式:用逻辑运算符(!,&&,||)连接的整型量,结果为整数(0或1)。

逻辑表达式可认为是整型表达式的一种特殊形式。

如:((x=3)&&(y=0))4、关系表达式:用关系运算符将两个表达式连接起来的式子,结果为整数(0或1)。

新]C语言期末复习,经典练习题+知识点总结+模拟考题。三位一体,完胜c语言!!!!{考期必备神器}

新]C语言期末复习,经典练习题+知识点总结+模拟考题。三位一体,完胜c语言!!!!{考期必备神器}

C语言期末复习(平时练习答案)[特别适用于千千万北航学子]考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换。

]第二次大作业—前驱、后继字符1. 【问题描述】从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。

【输入形式】从键盘输入一个字符【输出形式】按两行输出:第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开;第二行按照从小到大的顺序输出三个字符对应的ASCII 值,并以一个空格隔开。

【输入样例】 b 【输出样例】 a b c 97 98 99 【样例说明】输入字符b,b的前驱字符是a,后继字符是c,第一行按照从小到大的顺序输出a b c;第二行输出对应的ASCII值97 98 99 【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:。

【问题描述】编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。

【输入形式】从键盘输入三位的正整数。

【输出形式】输出交换后的正整数值。

【输入样例】 356 【输出样例】 653 【样例说明】从键盘输入的正整数值为356,将该数的个位与百位互换,所得结果为653.如果输入的正整数为300,则输出为3。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:。

【问题描述】从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。

【输入形式】从键盘输入三个整数,整数之间以空格隔开。

【输出形式】在屏幕上分两行显示结果:第一行为三个数的和,整数形式输出;第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。

【输入样例】 3 2 3 【输出样例】 8 【样例说明】 3、2、3的和为8,所以第一行输出8;第二行输出3、2、3的平均值(保留两位小数)。

【评分标准】结果完全正确得20分,每个测试点4分。

C语言期末复习资料

C语言期末复习资料

单项选择题1.char *p[10];该语句声明了一个: C 。

A) 指向含有10个元素的一维字符型数组的指针变量pB) 指向长度不超过10的字符串的指针变量pC) 有10个元素的指针数组p,每个元素可以指向一个字符串D) 有10个元素的指针数组p,每个元素存放一个字符串2.在while(!x)语句中的x与下面条件表达式等价的是: D 。

A) x!=0 B) x==1 C) x!=1 D) x==03.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为: C 。

A) *(a+j*n+i) B) *(a+i*n+j)C) *(*(a+i)+j) D) *(*a+i)+j4 union{double k;char c;float a;}test;则sizeof(test)的值是: A 。

A)8 B)1 C)4 D)135、下面程序的输出是____D_____#include<stdio.h>void main(){int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);(%o为8进制输出,%x为16进制输出)}A) k=11,k=12,k=11 B) k=11,k=13,k=13C) k=11,k=013,k=0xb D) k=11,k=13,k=B6、在下列选项中,不正确的赋值语句是____D____.(在变量说明中,不允许连续给多个变量赋初值,而赋值语句允许连续赋值。

如下述说明是错误的:)A) ++t; B) n1=(n2=(n3=0));C) k=i=j; D) a=b+c=1;7、下面合法的C语言字符常量是_____A_____.A) '\t' B) "A" C) 65 D) A8、表达式: 10!=9的值是______D__ ___.A) true B)非零值C) 0 D) 19、C语言提供的合法的数据类型关键字是_____B___.A) Double(应该为double)B) shortC) integer(应该为int)D) Char(应该为char)10、字符(char)型数据在微机内存中的存储形式是__D__.A) 反码B) 补码C) EBCDIC码D) ASCII码11、C语言程序的基本单位是_____C______.A) 程序行B) 语句C) 函数D) 字符12、设int a=12,则执行完语句a+=a-=a*a后,a的值是_____D__A) 552 B) 264 C) 144 D) -26413、执行下面程序中的输出语句后,输出结果是__B____.#include<stdio.h>void main(){int a; printf("%d\n",(a=3*5,a*4,a+5)); }A) 65 B) 20 C) 15 D) 1014、下面程序的输出是__B________.#include<stdio.h>void main(){int x=023; (八进制)printf("%d\n",--x); }A) 17 B) 18 C) 23 D) 2415下面程序的输出的是___C______.#include<stdio.h>void main(){int x=10,y=3;printf("%d\n",y=x/y);}A) 0 B) 1 C) 3 D) 不确定的值16、已知字母A的ASCII码为十进制的65,下面程序的输出是_______A____. #include<stdio.h>void main(){char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A) 67,D B) B,C C) C,D D) 不确定的值17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_____.A) a<>0 B) !a C) a=0 D) a18、以下程序的输出结果是__D______.#include<stdio.h>void main(){ int x=10,y=10;printf("%d %d\n",x--,--y); }A) 10 10 B) 9 9 C) 9 10 D) 10 919、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是_D_______.A) 1 B) 0 C) 4 D) 320、为表示关系x≥y≥z,应使用C语言表达式____A__.A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)C) (x>=y>=z) D) (x>=y) & (y>=z)21、C语言中非空的基本数据类型包括__B______.(基本数据类型有整型,字符型,浮点型,枚举类型)A) 整型,实型,逻辑型B) 整型,实型,字符型C) 整型,字符型,逻辑型D) 整型,实型,逻辑型,字符型22、若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf("%d",(x,y)); 上面程序片段的输出结果是___A____.A) 200 B) 100C) 100 200 D) 输出格式符不够,输出不确定的值23、阅读下面的程序#include<stdio.h>void main(){char ch;scanf("%3c",&ch);(%3c表示输入三个字符)printf("%c",ch); (表示输出一个字符)}如果从键盘上输入 abc<回车>则程序的运行结果是__A____.A) a B) b C) c D) 程序语法出错24、阅读下面的程序#include<stdio.h>void main(){int i,j; i=010; j=9;printf("%d,%d",i-j,i+j); }则程序的运行结果是___D_____.A) 1,19 B) -1,19 C) 1,17 D) -1,1725、阅读下面的程序#include<stdio.h>void main(){int i,j,m,n; i=8;j=10; m=++i; n=j++;printf("%d,%d,%d,%d",i,j,m,n);} 程序的运行结果是____C___;A) 8,10,8,10 B) 9,11,8,10C) 9,11,9,10 D) 9,10,9,1126、已知a=12,则表达式a+=a-=a*=a的结果是__A_____.A) 0 B) 144 C) 12 D) -26427、若已定义int a,则表达式a=10,a+10,a++的值是_B__.A) 20 B) 10 C) 21 D) 1128、阅读下面的程序#include<stdio.h>void main(){int i,j;scanf("%3d%2d",&i,&j); printf("i=%d,j=%d\n",i,j); }如果从键盘上输入1234567<回车>,则程序的运行结果是____D____.A) i=123,j=4567 B) i=1234,j=567C) i=1,j=2 D) i=123,j=4529、下面程序的输出结果是___D_____.#include<stdio.h>void main(){int a=-1, b=4, k;k=(++a<=0)&&(b--<=0);(如果&&前面部分为假则&&后面的部分就不被执行,如果前面部分为真则&&后面部分需要被执行)printf("%d,%d,%d\n",k,a,b);}A) 1,1,2 B) 1,0,3 C) 0,1,2 D) 0,0,330、下面叙述错误的是___D___A)一个由数据申明部分和执行语句组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、面向对象相关概念:类:具有相同属性和行为的对象集合,把数据和操作封装在一起对象:数据+操作。

面向对象特征:抽象,封装,继承,多态2、输入输出:输入cin>>a>>b;输入不能有endl。

输出cout<<a<<b<<endl;3、const修饰符:●指向常量的指针:如const char *p=”abcd”;不允许改变指针所指的常量,如p[3]=’x’是错误的,但是可以改变指针p的值p=“mn”;是对的。

●常指针:char *const p =“abcd”;指针本身是常量,不能移动,但是所指内容为变量,可以更改,如p[3]=’x’是对的。

●常数据成员,常成员函数,常对象:在类中声明的数据或函数可以是常量,对于常数据成员要用初始化列表初始值,在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,一个常对象只能调用它的常成员函数,不能调用普通成员函数。

常成员函数格式:类型说明符函数名(参数表)const;常成员函数可以参加重载。

常成员函数不能更新对象的数据成员,也不能调用该类中的普通成员函数,const成员函数不能修改数据成员。

4、内联函数:在函数说明前冠以关键字inline,目的是消除函数调用时的系统开销,提高运行速度。

注意:内联函数体内不能有循环语句和switch语句。

内联函数的声明必须出现在内联函数第一次被调用之前。

类结构中所有在类说明体内定义的函数都是内联函数。

5、带有缺省参数值的函数:在说明函数原型时,可以给一个或多个形参指定缺省值,调用时如给出实参,则采用实参值,否则采用预先给出的默认形参值。

如某一个类point的构造函数原型为point(int x=1, int y=0);则参数x和y的缺省值为1和0.注意:在函数原型中,所有缺省值的参数都必须从右往左缺省,在函数调用时从左往右将实参与形参结合,如point(int x=1, int y=0) {X=x;Y=y;},那么执行point p(3)之后p的X和Y值分别为3,0.6、函数重载:C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。

注意:重载函数的形参必须不同: 个数不同或类型不同。

编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。

例:void add(int m, int n){ cout<<”two integer numbers m+n=”<<m+n<<endl; }void add(float x,float y){ cout<<”two float numbers m+n=”<< m+n<<endl; }int i=1,j=2;float f=1.0,d=2.0;add(i,j);add(f,d);则前者调用第一个函数,后者调用第二个函数输出two integer numbers m+n=3two float numbers m+n=3.07、引用:引用(&)是标识符的别名,例如:int i;int &ri=i; //建立一个int型的引用ri,并将其初始化为变量i的一个别名。

注意:声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象,不能声明完成后再赋值,如 int i;int &ri;//错误ri=i;一旦一个引用被初始化后,就不能改为指向其它对象。

如:int i,j;int &ri=i;ri=&j;//错误引用可以作为形参作为传地址调用,效果和指针一样。

void s a, int& b) {...}引用与地址符的区别:引用运算符仅在声明是带有引用运算符&,以后就像使用普通变量一样,其他场合使用&都是地址操作符8、作用域标识符(::)如果希望在局部变量的作用域内使用同名的全局变量,在该变量前加上::,如::a代表全局变量。

9、new和delete运算符new用来内存分配,最基本格式为:指针变量=new 类型名;该语句在程序运行时从自由存储区中为程序分配一类型名字节大小空间,该空间首地址被存于指针变量中。

运算符delete用于释放new分配的存储空间,基本格式:delete 指针名;说明:●可以用new将分配的对象初始化,new和delete都可以重载。

●new分配的空间使用结束后应该也只能用delete显式释放,否则将不能回收而变成死空间●使用new为数组动态分配内存:指针变量=new 类型名[下标值];如int *p=newint[10];释放时:delete []指针变量名;如delete []p;●new可以为简单变量分配内存时同时进行初始化,指针变量=new 类型名(初始化列表);如int *p=new int(10);10、类是一种用户自定义类型,声明形式:class 类名称{public:公有成员(外部接口)private:私有成员protected:保护型成员};类成员中缺省访问方式为私有●公有类型成员:在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。

●私有类型成员:在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。

如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。

●保护类型:在类的定义中,说明为protected的数据成员称为保护成员。

保护数据成员具有双重作用:对于其派生类而言,是公有的,而对于其外部的程序而言,是私有的●类的成员:成员数据与一般的变量声明相同,但需要将它放在类的声明体中。

成员函数在类中说明原形,可以在类外给出函数体实现,并在函数名前使用类名加以限定。

也可以直接在类中给出函数体,形成内联成员函数。

●类的对象是该类的某一特定实体,即类类型的变量。

声明形式:类名对象名;例:Clock myClock;●类中成员的访问方式:类中成员互访:直接使用成员名类外访问:使用“对象名.成员名”或“对象指针名->成员名“方式访问 public 属性的成员11、构造函数构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。

特点:●在对象创建时或new类名时由系统自动调用。

●如果程序中未声明,则系统自动产生出一个默认形式的构造函数,只有程序中定义有构造函数,系统不再自动生成缺省的构造函数缺省构造函数类名::缺省构造函数名(){}●函数名必须与类名相同●不能指定函数返回类型●参数可以有,也可以无,参数可以带默认形参值,所以一个类可以有多个构造函数,从而构造函数可以重载。

如有一个类A,当执行语句A a;时将自动调用该类的无参构造函数或缺省的构造函数或带默认形参值的构造函数,但无参构造函数和带默认形参值的构造函数二者同时出现容易出现调用时引起二义性●允许是内联函数利用构造函数创建对象有两种方法:●用构造函数之间创建对象:类名对象名(实参表);如point p(1,2);●利用构造函数创建对象时,通过指针和new来实现:类名 *指针变量=new 类名(实参表);如A *p=new A(1,2);注意类A声明对象指针并不调用构造函数,而是通过new创建临时对象调用构造函数,所以该语句只调用构造函数1次12、拷贝构造函数拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用,作用是用已经存在的对象初始化另一个同类的新对象。

类名(类名 &对象名);//拷贝构造函数如类A拷贝构造函数为: A (A &x);拷贝构造函数特点:●也是构造函数,所以其函数名与类名相同,没有返回值●只有一个参数,并且是本类的对象引用,所以一个类只能有一个,不能重载●每一个类都有一个拷贝构造函数,如果没有定义,系统会自动生成一个缺省的调用拷贝构造函数3种情况:●当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值。

●若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。

●当函数的返回值是类对象时,系统自动调用拷贝构造函数。

深拷贝和浅拷贝:缺省的拷贝构造函数所实现的数据成员逐一赋值就是浅拷贝,当类中有指针时,需要自定义拷贝构造函数,谓深拷贝。

13、析构函数完成对象被删除前的一些清理工作。

特点:●析构函数与构造函数名相同,但它前面必须加一个波浪号~●析构函数没有返回值●析构函数没有参数,所以一个类中只能有一个析构函数,所以析构函数不能重载●当撤销对象时,或delete对象指针编译系统自动调用析构函数●如果没有定义析构函数,系统自动生成一个缺省的析构函数类名::~缺省析构函数名(){}14、成员初始化列表在声明类时,不能在数据成员的声明中对数据成员进行初始化,一般在构造函数中用赋值语句进行,但对于内嵌的对象、常量、引用数据成员需要在构造函数的成员初始化列表中进行。

带有成员初始化列表的构造函数一般格式:类名::构造函数名(参数表):(成员初始化列表){。

}15、this指针隐含于每一个类的成员函数中的特殊指针。

16、对象数组:类名数组名[下标值];该数组中每个元素都是对象,都会自动调用构造函数,当数组中每一个对象被删除时,系统都要调用一次析构函数。

访问方法:数组名[下标].成员名17、对象指针:类名 *对象指针名;定义对象指针不会调用构造函数利用对象指针可以访问单个对象成员,如point *p,ob;p=&ob;p->show();或(*p).show(); 也可以用对象指针访问对象数组,对象可以作为函数参数,对象指针也可以18、指向类成员的指针:通过指向成员的指针只能访问公有成员指向类的非静态成员的指针●指向公有数据成员的指针:类型说明符类名::*数据成员指针名;说明指针应该指向哪个成员:指针名=&类名::数据成员名;通过对象名(或对象指针)与成员指针结合来访问数据成员:对象名.* 类成员指针名或:对象指针名->*类成员指针名●声明指向公有函数成员的指针:类型说明符 (类名::*指针名)(参数表);初始化:指针名=类名::函数成员名;通过对象名(或对象指针)与成员指针结合来访问函数成员:(对象名.* 类成员指针名)(参数表)或:(对象指针名->*类成员指针名)(参数表)指向类的静态成员的指针●对类的静态成员的访问不依赖于对象,可以用普通的指针来指向和访问静态成员19、静态成员●静态数据成员●用关键字static声明,该类的所有对象维护该成员的同一个拷贝,必须在类外定义和初始化,用(::)来指明所属的类。

相关文档
最新文档