(完整版)C++学习笔记

合集下载

C语言知识点总结(完美版)

C语言知识点总结(完美版)

C语言知识点总结(完美版)C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。

2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte 是指字节, 一个字节 = 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、#define PI 3.1415926; 这个写法是错误的,一定不能出现分号。

3、每个C语言程序中main函数是有且只有一个。

4、在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出。

6、break可用于循环结构和switch语句。

7、逗号运算符的级别最低,赋值的级别倒数第二。

第一章 C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。

(.c—.obj—.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。

(常考!)第三节、标识符1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了2、标识符分为关键字、预定义标识符、用户标识符。

关键字:不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

c语言基础知识笔记

c语言基础知识笔记

c语言基础知识笔记
1、定义
函数是一组一起执行一个任务的语句,每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。

函数声明告诉编译器函数的名称、返回类型和参数,函数定义提供了函数的实际主体。

2、函数的一般形式
return_typefunction_name(parameterlist)
{bodyofthefunction}
组成部分:
1.返回类型
返回类型:一个函数可以返回一个值。

return_type是函数返回的值的数据类型,有些函数执行所需的操作而不返回值,在这种情况下,return_type是关键字void。

2.函数名称
函数名称:这是函数的实际名称。

函数名和参数列表一起构成了函数签名。

注意:函数名和参数列表一起构成了函数签名,意味着可以出现参数列表不同但是函数名相同的函数。

voidprint()
{printf("helloworld!");}
voidprint(intnums)
{printf("%d\n",a);}
3.参数
参数:参数就像是占位符,当函数被调用时,您向参数传递一个值,这个值被称为实际参数。

参数列表包括函数参数的类型、顺序、数量,参数是可选的,也就是说,函数可能不包含参数。

4.函数主体
函数主体:函数主体包含一组定义函数执行任务的语句。

(完整)C语言 谭浩强学习笔记

(完整)C语言 谭浩强学习笔记

C语言谭浩强版笔记第一章程序设计和C语言1、计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该计算机的机器语言。

2、语言的发展历史:①机器语言②符号语言③高级语言3、高级语言的发展:①非结构化语言②结构化语言③面向对象的语言4、C语言的祖先是BCPL语言5、在字符串中的//和/*都不作为注释的开始。

而是作为字符串的一部分。

【但是在vc++6.0中//显示编译错误】6、不要以为在max函数中求出最大值z后就会自动地作为函数值返回调用处,必须用return语句指定将哪个值作为函数值。

也不要不加分析地在所有函数后面都写上return 07、一个程序由一个或多个源程序文件组成8、全局声明:即在函数之外进行的数据声明,在函数外面声明的变量称为全局变量。

例如把int a,b,sum;放到main函数的前面9、函数是C程序的主要组成部分,编写C程序的工作主要就是编写一个个函数10、一个C语言程序是由一个或多个函数组成的,其中必须有且只有一个main函数11、一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中一个为main函数),若程序规模太大,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数【一个源程序文件就是一个程序模块,一个程序分成若干个程序模块】12、在进行编译时是以源程序文件为对象进行的【分别对各源程序文件进行编译得到相应的目标程序,然后再将这些目标程序连接成为一个统一的二进制可执行程序】13、C语言的这种特点使得容易实现程序的模块化14、一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。

如果函数没有参数,可以写void或空括号【如int main(void)或int main()】15、void dump(){}它是一个空函数,但是是合法的16、程序总是从mian函数开始执行的,不管位置在哪儿17、程序中对计算机的操作是由函数中的C语句完成的18、二进制目标程序在visual C++中的后缀为.obj19、可执行程序在visual C++中的后缀为.exe20、一个源程序经过编译后得到的目标程序要经过连接阶段与函数库进行连接才能生成可执行文件21、程序设计的任务:①问题分析②设计算法③编写程序④对源程序进行编辑、编译和连接⑤运行程序,分析结果⑥编写程序文档第二章算法1、对数据的描述:在程序中要指定用到哪些数据类型以及这些数据类型和数据的组织形式,这就是数据结构。

学习C语言详细笔记(完整版)

学习C语言详细笔记(完整版)

C语言视频教程第一讲:(1-13)C语言概述一、为什么学习C语言1)C的起源和发展2)C的特点3)C的应用领域4)C的重要性二、怎样学习C语言三、学习目标四、常见问题答疑(1)学习JAVA为什么建议先学C语言(2)没学过计算机专业课程能够学懂C语言(3)英语和数学不好能学好C语言么?五、课程计划六、举例子:一元二次方程一、为什么学习C语言1)C的起源和发展(ppt)在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。

Fortran语言主要用于科学计算。

Basic语言是vb的前生,pascal语言一般是用于教学。

C语言是最重要的,其他的语言一般很少用了。

结构化的代表语言是c语言。

结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。

在面向对象的语言中c++是最复杂的语言。

由于c++语言太复杂,sun公司对c++进行了改装,产生了java语言。

而c#是由微软开发的,和java相似,几乎一模一样。

在高级语言的执行速度上,c是最快的,c++其次,而java和c#是最后的。

Java和c#流行,主要的一个原因是可以跨平台。

C语言的发展和过程:2)C语言的特点:·优点:代码量小,速度快,功能强大。

金山公司最主要是靠wps办公软件来发展的。

Wps是c语言开发的,其安装包比Office少了10多倍。

三大操作系统:windows,unix,linuxWindows内核是c语言写的,而外壳是c++写的。

Java永远不可能写操作系统。

因为java运行速度太慢了。

而linux和unix都是纯c写的。

操作系统控制了硬件,如果说操作系统的运行速度慢,那么当我们在运行软件的时候,运行速度会更慢。

为什么使用c语言写操作系统呢,首先是因为c的运行速度快,然后是因为c可以直接控制硬件,而其他语言不可以。

没有指针的语言是不能直接访问硬件的。

·缺点:危险性高,开发周期长,可移植性弱。

c语言重点笔记

c语言重点笔记

c语言重点笔记C语言重点笔记一、基础语法1.注释:用于解释代码,不会被编译器执行。

单行注释以“//”开头,多行注释用“/* */”包围。

2.变量:用于存储数据。

定义变量时需要指定类型和名称,如int num;赋值时使用等号,如num=10;也可以在定义时进行赋值,如int num=10;3.数据类型:C语言提供了基本的数据类型,包括整型、浮点型、字符型等。

4.运算符:C语言提供了各种运算符,包括算术运算符、关系运算符、逻辑运算符等。

5.控制语句:C语言提供了各种控制语句,包括条件语句、循环语句等。

二、函数1.函数定义:函数是一段可重复使用的代码块。

定义函数需要指定返回值类型、函数名和参数列表。

如int add(int a, int b) { return a + b; }2.函数调用:调用函数时需要使用函数名和参数列表,并根据返回值类型进行接收。

如int result = add(1, 2);3.递归函数:递归是一种特殊的函数调用方式,在函数内部调用自身。

需要注意避免死循环。

三、数组1.数组定义:数组是一组相同类型的数据。

定义数组时需要指定类型和长度,如int arr[5];2.数组初始化:可以在定义时进行初始化,如int arr[5] = {1, 2, 3, 4, 5};3.数组访问:使用下标访问数组元素,下标从0开始,如arr[0]表示数组的第一个元素。

4.多维数组:多维数组是由一维数组组成的。

二维数组可以看作是一个矩阵,定义时需要指定行数和列数。

四、指针1.指针定义:指针是一个变量,用于存储另一个变量的地址。

定义指针时需要指定类型和名称,如int *p;2.指针运算:可以对指针进行加减运算,表示移动指针位置。

3.指针与数组:可以使用指针访问数组元素,如int *p = arr; p[0]表示arr[0]。

4.空指针:空指针是没有被初始化的指针。

五、结构体1.结构体定义:结构体是一种自定义数据类型,可以包含多个不同类型的成员变量。

c 语言学习笔记01

c 语言学习笔记01

1. c 语言1.1.1.helloworld文件名:test_pointer.c文件内容:#include <stdio.h>#include <malloc.h>int main(){printf("hello world\n\n");return 0;}编译加运行:[root@localhost c_study]# gcc test_pointer.c ;./a.outhello world1.1.2.获取键盘输入文件名:getKeyboardInptStr.c文件内容:#include <stdio.h>#include <malloc.h> int main(){char *a= malloc(sizeof(char *));char *b= malloc(sizeof(char *));scanf("%s",a);scanf("%s",b);printf("%s \t%s\n",a,b);free(a);free(b);return 0;}编译:gcc getKeyboardInptStr.c -o hello.exe运行[root@localhost tcp_ip]# ./hello.exe abcdddabc ddd[root@localhost tcp_ip]#1.1.2.1.从键盘输入构造数组文件名keyboard_input.c文件内容:#include <stdio.h>#include <malloc.h>int main(){char * strs[4];char *a;int i;for(i=0;i<4;i++){a= malloc(sizeof(char *));scanf("%s",a);strs[i]=a;//printf("%s \t\n",a);//free(a);}printf("=====================================\n");for(i=0;i<4;i++){printf("%s \t\n",strs[i]);}return 0;}1.1.3.读取文件读取文件有两个操作:打开流(fopen)和关闭流(fclose)#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(int ac,char**av){int exit_status=EXIT_SUCCESS;FILE *input;while( *++av!=NULL){input=fopen(*av,"r");if(input==NULL){perror(*av);exit_status=EXIT_FAILURE;continue;}if(fclose(input)!=0){perror("fclose");exit(EXIT_FAILURE);}}return exit_status;}1.1.3.1.打开文件流1.1.3.1.1.ungetc 用法文件名:ungetc_test.c文件内容:#include<stdio.h>#include<ctype.h>int main(){int value;int ch;value=0;while((ch=getchar())!=EOF && isdigit(ch)){value=value*10;value+=ch-'0';}//ungetc(ch,stdin);printf("%d\n",value);ch=getchar();printf("last char is %c\n",ch);return value;}若注释掉红色部分:[root@localhost read_file]# gcc ungetc_test.c;echo 234abc|./a.out 234last char is b否则:[root@localhost read_file]# gcc ungetc_test.c;echo 234abc|./a.out 234last char is a1.1.3.2.关闭流1.1.3.3.读取文本文件文件名称:read_file03.c文件内容:#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(){int value;int ch;char *input_file="ab.txt";FILE *input;input=fopen(input_file,"r");while((ch=fgetc(input))!=EOF){printf("%c",ch);}return 0;}1.2.指针1.2.1.取地址和取值取地址:&取值:*1.2.1.1.取地址int age=23;int *age_adrr=&age;1.2.1.2.取值参阅取地址。

C程序设计(第五版)谭浩强学习笔记—重点及易错点(第7章-函数)

C程序设计(第五版)谭浩强学习笔记—重点及易错点(第7章-函数)

C程序设计(第五版)谭浩强学习笔记—重点及易错点(第7章-函数)⽤函数实现模块化程序设计⽬录⼀、定义函数定义函数应包括以下⼏个内容:(1) 指定函数的名字,以便以后按名调⽤。

(2) 指定函数的类型,即函数返回值的类型。

(3) 指定函数的参数的名字和类型,以便在调⽤函数时向它们传递数据。

对⽆参函数不需要这项。

(4) 指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。

这是最重要的,是在函数体中解决的。

类型名函数名(形式参数表列){函数体}例如:int max(int x,int y){ int z; //声明部分z=x>y?x:y; //执⾏语句部分return(z);}当然函数可以没有返回值或者形式参数。

⼆、调⽤函数1.⾸先要对要调⽤的函数进⾏声明2.采⽤合适的⽅式调⽤函数(1). 函数调⽤语句 把函数调⽤单独作为⼀个语句。

如printf_star(); 这时不要求函数带回值,只要求函数完成⼀定的操作。

(2). 函数表达式 函数调⽤出现在另⼀个表达式中,如c=max(a,b); 这时要求函数带回⼀个确定的值以参加表达式的运算。

(3). 函数参数 函数调⽤作为另⼀个函数调⽤时的实参。

如m=max(a,max(b,c));,⼜如:printf (″%d″, max (a,b));3.实参和形参间的数据传递:实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,⽽不能由形参传给实参。

实参和形参在内存中占有不同的存储单元,实参⽆法得到形参的值。

例如:{ float add(float x, float y); //对add函数作声明float a,b,c;printf("Please enter a and b:"); //提⽰输⼊scanf("%f,%f",&a,&b); //输⼊两个实数c=add(a,b); //调⽤add函数printf("sum is %f\n",c); //输出两数之和return 0;}float add(float x,float y) //定义add函数{ float z;z=x+y;return(z); //把变量z的值作为函数值返回}三、函数的递归调⽤在调⽤⼀个函数的过程中⼜出现直接或间接地调⽤该函数本⾝,称为函数的递归调⽤。

C语言基础学习笔记

C语言基础学习笔记

C语言基础学习笔记(第一版修改)丁炳亮1数据类型和表达式1.1计算机内数据存储方式理解与测试:什么是补码?我们得先知道模的概念。

模“模”是指一个计量系统的计数范围。

如时钟等。

计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。

例如:时钟的计量范围是0~11,模=12。

表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。

“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。

任何有模的计量器,均可化减法为加法运算。

例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。

对“模”而言,8和4互为补数。

实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。

共同的特点是两者相加等于模。

二进制中整数的补码求法是:正数的补码为原码,负数的补码是符号位不变其他位全部取反再整个数加1。

我们可以通过下面的代码看下负整数在计算机内部的表示。

void f(int n){unsigned int i;for(i=1,i<<=15;i;i>>=1){if(i&n)printf("1");elseprintf("0");}printf("\n");}main(){int a=-0xff;f(a);getch();}输出的结果是1111111100000001。

1.2变量与常量理解与测试:1)类型声明在计算机内部数据是以字节为单位存储的,但是我们需要的数据类型有很多种,每种数据类型所占字节和存储方式都不一样。

类型声明的作用就是告诉计算机以哪种“格式”去读写该数据数据。

类型说明符变量名1,变量名2......,变量名n;类型说明符有基本类型(字符型、整数型、单/双精度型)、高级类型(结构体型、共用体型、枚举类型)、指针型等,其中指针类型包括指向基本类型的指针类型、指向高级类型的指针型和指向函数的指针类型(指向函数指针声明格式在后面章节)。

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

endl换行符,也是std成员函数4).io流运算cout控制台输出—屏幕上终端窗口,带缓冲<<插入运算符cin控制台输入—键盘>>提取运算符5).名字空间Std:标准c++库所提供一切函数、对象、类型都隶属于std名字空间。

::-作用域限定符---名字空间“的”某个对象。

+= -=名字冲突:看作用域。

同一作用域不可使用相同名字。

----解决方法:成员前加名字空间名,中间::3.名字空间namespace 名字空间名{名字空间成员1;名字空间成员2;//名字空间成员可以是变量、函数、类型}名字空间名::名字空间成员1名字空间合并:同一个名字空间可以分别书写在不同的namespace子句中,只要它们的名字相同,仍然会被编译器识别为同一个名字空间。

Namespace名字空间名{名字空间成员1;}namespace名字空间名{名字空间成员2;}名字空间成员的声明和定义可以分开写,但是定义部分需要借助作用域限定符“::”指明所定义的成员隶属于哪个名字空间。

名字空间指令:using namespace名字空间名;名字空间指令以后的代码,对名字空间中的所有成员可见,可以直接引用,无需作用域限定符。

使用时要注意不要引入新的名字冲突。

名字空间声明:using名字空间名::名字空间成员;名字空间声明用于将名字空间中的特定标识符引入当前作用域,可以省略作用域限定符,直接引用之。

使用时注意不要因此引入新的名字冲突。

无名名字空间:不隶属于任何名字空间的标识符,编译器就将其缺省地放入无名名字空间。

对于无名名字空间中的成员,可以直接使用“::”进行访问。

名字空间允许多层嵌套,访问时需要逐层分解。

可利用名字空间别名简化名字空间嵌套路径的书写形式。

Using只能看里面一层。

4.结构、联合和枚举1)所有的类型关键字在声明变量时都可以省略。

struct Date{ //Date结构名int year; //成员变量(成员表列)(类型说明符成员名)int month;int day;void show(void)//成员函数{}};Int main(void){ //全局变量Date d = {2016,8,2},*e = &d;//e是指向d的指针d.show(); //“.”直接成员访问运算符e->show (); //“->”间接成员访问运算符return 0;}struct Date d = {2016,8,2};//C/C++Date d = {2016,8,2};//C++ //类型关键字省略2)C++中结构体可以包含函数(一个int四个字节,函数不放变量中,放代码区)成员函数的调用,前面要写“.”“->”定义结构体时不能同时初始化!3)C++中增加了匿名联合。

借用了联合语法形式,定义变量的内存布局。

4)C++中枚举是一种整型的数据类型,其取值范围也是类型的一部分,因此在和整型进行类型转换时会受到约束。

5.字符串子面值:“Hello,World!”字符指针:“char const* p = 字符串”;字符数组:char ca[] = “字符串“;string对象:string s = “字符串“;简单、安全、一致。

栈是一种数据结构。

栈可以用来存放一组数字,这些数字按照时间先后被放到栈里,从栈里获得数字的时候一定是最后一个放进去的数字,这个规则叫做后进先出。

实现栈的时候使用push函数向里面放数字,使用pop函数从栈里获得数字。

实现栈的时候最前面数字所在存储区位置固定,最后面数字所在存储区位置不断变化。

字符串比较函数strcmp(const char[ ],const char[ ]);如果str1等于str2,函数值为0;大于,正整数;小于,负整数。

c.size:字符串长度sizeof(c):求c这个字符串的字节大小(跟字符串长度无关)——string里存的是字符串地址。

所占内存为动态内存,在堆空间里。

#include<string> //C++的string类型#include<string.h> //和下面的等价,标准C语言的字符串函数:strcpy/strcat#include<cstring> //6.布尔类型:bool逻辑值:真和假True/false1/0任何类型都可以隐式转换为布尔类型,(bool b;b = 1234;)其转换规则就是只要源类型数据的值为0就是假(false),否则就是真(true)。

在C++中关系表达式和逻辑表达式的值的类型是bool而不是int7.操作符别名(unimportant)8.重载1)同一个作用域中,函数名相同,参数表不同的函数,构成重载关系。

2)在调用具有重载关系的函数时,编译器会根据所提供的实参表,选择与之相适应的重载版本,这个过程叫做重载解析。

void foo(void);void foo(int n);void foo(int* p);char const* foo(int n,double d);char const* foo(double d,int n);char const* foo(double x,int y);//非法,参数名与重载无关int foo(void);//非法,返回类型与重载无关【调用时重载解析】3)直接调用函数,编译器是在编译函数调用语句时进行重载解析。

通过函数指针调用函数,编译器是在编译对函数指针初始化或赋值的语句时进行重载解析。

4)只有同一作用域中的同名函数才涉及重载问题,不同作用域中的同名函数遵循名字隐藏原则。

同时,需要注意名字空间指令和名字空间声明对可见性以及作用域的影响。

5)重载是通过c++换名实现的。

C++编译器在编译函数时,会将其参数表的类型信息合并到函数名中,生成一个新的函数名。

参数表不同的重载版本,在二进制目标模块(.o文件)中使用的是被编译器置换以后的函数名。

C++换名在C和C++混合编程时会带来问题。

C++3pm二、类和对象1.什么是对象?万物皆对象。

2.如何描述对象?通过对象的属性和行为加以描述。

3.什么叫面向对象?现实世界描述虚拟世界真是对象属性/行为逻辑对象类4.什么是类?类就是一种用于描述对象属性和行为的数据类型。

Int/float/char,太过单一数组,类型不够丰富,表现力差结构,缺乏函数语法,无法表现行为类,可以表示一到多个属性(变量),其类型可以相同也可以不同,同时提供对多种不同行为(函数)的描述。

狗属性:犬种、犬龄、体重、毛色行为:进食、睡眠、玩耍5.类的定义与实例化1)类的一般形式class/struct 类名:继承方式基类{ //class clock:public QWidget访问控制限定符://public,private,protect类型成员变量名;返回类型成员函数名(形参表)常属性异常说明{函数体}类名(形参表):成员变量名(初值)…{//构造函数函数体}~类名(void){//析构函数函数体}};访问控制限定符:public-公有成员,谁都可以访问private-私有成员,只有声明该成员的类自己及其子类可以访问。

protected-保护成员,只有声明该成员的类自己及其子类可以访问。

class的缺省访控属性为私有,struct的缺省访控属性为公有。

2)构造函数函数名必须和类名完全相同,没有返回类型,当对象被创建时有系统自动调用,设置对象的初始状态。

复习:1.const只修饰它左边的,如果左边没有,就修饰它右边的。

const int * p;const修饰int,说明int具有常属性,int的值不能改变。

P是一个指针,指向int。

p里面所存的值可以改。

Int const *p;同上。

【常量指针:指向常量的指针】Int * const p;const修饰*,p具有常属性,p里面所存地址不能改。

但是指向的目标可以改。

【指针常量:拥有常属性的指针】2.时钟printf (“\r%02d:%02d:%02d”,m_hour,m_min,m_sec); //\r回到行首,\n回到行首并错开一行。

Cout << flush; //把缓冲区的内容显示到屏幕上。

***成员变量前加m_3.56.构造函数与初始化表1)构造函数可通过参数表的差别进行重载,不同版本的构造函数代表该对象不同的初始化方式。

2)构造函数典型的重载版本A.缺省构造函数,可以不带任何参数构造对象,表示对象缺省(默认)状态。

如果有参构造函数的所有参数都带有缺省值,那么该构造函数就也可以被当做缺省构造函数。

B.转换构造函数,可以通过单个参数调用的构造函数,从参数的类型隐式转换为所构造对象的类型。

通过explicit关键字可以强制通过这样的构造函数所进行的类型转换必须显式完成。

C.拷贝构造函数。

相关文档
最新文档