钱能 c++程序设计教程 语法内容疑难与边角料知识

简介: 钱能 c++程序设计教程 语法内容疑难与边角料知识

第二章 基本数据类型与输入/输出

如果没有专门指定,第1个符号常量的枚举值就是0,其他枚举值依次为1往上加。可以给枚举符指定枚举值,也可以部分指定枚举值。不能用整数值赋给枚举变量。

常量定义时必须初始化,编译前确定值。

setfill控制符可以确定setw所规定的的间隔字符

%-5.3s%中的负号表示左对齐,如果没有负号则默认右对齐。5表示格式宽度,3表示截取字符串中第3个字符。

第三章 表达式和语句

结合性,指表达式中出现同等优先级的操作符时,该先做哪个操作的规定。

! ~ + - ++ -- & * sizeof new delete从右向左结合

?: = *= /= += -= |= <<= >>=从右向左结合

增量和减量操作符要求操作数是左值,前增量结果是左值,后增量结果不是左值。

在一个条件运算符表达式中,如果后面两个表达式值类型相同都是左值,则该条件运算符表达式的值为左值表达式。如果逗号表达式最后一个表达式为左值,则该逗号表达式为左值。

第五章 函数

默认值可以是全局变量、全局常量,甚至是一个函数

第六章 程序结构

extern int n表示该变量n不在本文件中分配空间,在程序其他文件中分配空间。默认的函数声明总是extern的。

全局静态变量使得该变量称为由定义该变量的源文件独享。

具有文件作用域的变量具有静态生命期。全局变量、静态全局变量、静态局部变量具有静态生命周期。

动态生命期的变量驻扎在内存的堆中,用free或delete释放变量或程序结束时,生命期结束。

条件编译协调多个头文件。

第八章 指针

指针具有一定类型,是值为地址的变量,该地址是内存中另一个该类型变量的存储位置。指针是具有某个类型的地址

常量指针定义const int *pi=&a告诉编译器,*pi是常量,不能将*pi作为左值进行操作

指针常量定义int *const pc=&b告诉编译器,pc是常量,不能作为左值进行操作,但允许修改间接访问值,*pc可以修改。

常量指针常量定义const int *const cpc=&b,告诉编译器,cpc*cpc都是常量,都不能作为左值进行操作。

第九章 引用

引用在声明时必须被初始化。引用运算符只在声明时被使用,放在类型名后面。

无引用的引用,无指针的指针。

c++不区分变量的const引用和const变量的引用

第十章 结构体

数组是单纯空间意义上同类数据实体的集合,结构大小固定可以被赋值。

用结构参数引用传递,无需给另一个结构变量赋值,无需在返回时复制结构值给临时结构变量。

类名允许与其他变量名或函数名相同。

十二章 构造函数

构造函数没有返回类型,函数体中不允许返回值。

在类中声明的对象成员的次序依次调用其构造函数。

只要一个类定义了一个构造函数(不一定是无参构造函数),c++就不再提供默认构造函数。如果创建全局对象或静态对象,则对象的位模式全0,否则对象值随机。

冒号语法使得常量数据成员和引用数据成员的初始化成为可能。

所有全局对象都在main前构造。

全局对象构造时无特殊顺序,按照出现的顺序依次构造。

十三章 面向对象程序设计

全局变量、静态数据、常量、字面量存在全局数据区。类成员函数和非成员函数代码在代码区。局部变量、函数参数、返回数据、返回地址存放在栈区。余下空间作为堆区。

从堆上分配对象数组,只能调用默认构造函数,不能调用其他构造函数。

如果类需要析构函数来析构资源,则需要深拷贝构造函数。

把构造函数用于类型转换,只会尝试含有一个参数的构造函数。如果有二义性,则放弃尝试。

十五章 静态成员与友元

静态数据成员确实是在程序一开始运行时必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数分配空间和初始化。

一个静态成员函数不与任何对象联系,不能对非静态成员进行默认访问。静态成员函数没有this指针,非静态成员函数有一个指向当前对象指针this。

友元函数不是成员函数,它是类的朋友,因而能够访问类的全部成员。

一个类的成员函数可以使另一个类的友元。整个类是另一个类的友元,该友元称为友类。友类的每个成员函数都可以访问另一个类中的保护或私有数据成员。

十六章 继承

可以通过自身成员函数访问父类private成员

基类私有成员在派生类下是隔离的,必须通过基类的保护成员或公有成员函数访问。对于私有继承,派生类的成员函数可以访问基类保护和公有成员,却不能直接访问基类私有成员。通过保护成员或公有的基类成员函数访问基类私有成员。

调整访问控制属性的前提是派生类中该成员必须可见

多继承程序必须在重名前说明基类

虚拟继承的虚拟和虚拟函数的虚拟没有任何关系

1.构造函数按以下顺序调用:1.任何虚拟基类的构造函数按它们被继承的顺序构造。2.任何非虚拟基类的构造函数按照它们被继承的顺序构造。3.任何成员对象的构造函数按照它们声明的顺序调用。4.类自己的构造函数

十七章 多态

在运行时根据其类型确认调用哪个函数的能力称为多态或迟后联编。

若语言不支持多态,则不能被称为面向对象的语言。

为了指名某个成员函数具有多态性,用virtual标志其为虚函数。该虚函数性质自动向下带给其子类。

虚函数在基类与子类仅仅是名字相同,参数类型不同或返回类型不同,即使加上了virtual也不迟后联编。

子类的虚函数返回子类指针或引用,进行迟后联编。

只有类的成员函数才能说明为虚函数。静态成员函数不能是虚函数。内联函数不能是虚函数。构造函数不能是虚函数。

从相似的类中将共有特征提取出来的过程称为分解。

c++允许程序员声明一个不能有实例对象的类,唯一用途是被继承。这种类被称为抽象类。一个抽象类至少具有一个纯虚函数。在纯虚函数的声明后“=0”表示程序员将不定义该函数。一个抽象类不能有实例对象。

不能创建一个抽象类,但可以声明抽象类的指针或引用。

十八章 运算符重载

不能重载点操作符.,域作用操作符::,访问操作符.,指针操作符->,条件操作符?:,=,(),[],->必须为成员形式

拷贝构造函数执行时,对象不存在,起初始化作用。

赋值运算符分两部分,第一部分与析构函数类似,在其中取消对象已经占用的资源。第二部分与拷贝构造函数类似,分配新的资源。

十九章 I/O流

getline()读取输入行。

二十章 模板

类模板是模板的定义,模板类是实实在在的类定义,由类模板生成。

编译器首先匹配重载函数,然后再寻求模板的匹配。

二十一章 异常

try块后紧跟多个catch()语句。catch()括号中的声明只能容纳一个形参,当类型与抛掷异常类型匹配时,catch()块捕获了一个异常,进行异常处理。

任意数量的catch()紧随出现在try语句块后。


目录
相关文章
|
1月前
|
存储 网络协议 Ubuntu
【C++网络编程】Socket基础:网络通讯程序入门级教程
【C++网络编程】Socket基础:网络通讯程序入门级教程
55 7
|
1月前
|
编译器 开发工具 C++
Dev-C++详细安装教程及中文设置(附带安装包链接)
Dev-C++详细安装教程及中文设置(附带安装包链接)
78 0
|
2月前
|
Java 程序员 Maven
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
71 0
|
4天前
|
存储 C++ 容器
【C++从练气到飞升】09---string语法指南(二)
【C++从练气到飞升】09---string语法指南(二)
|
4天前
|
存储 Linux C语言
【C++从练气到飞升】09---string语法指南(一)
【C++从练气到飞升】09---string语法指南(一)
|
18天前
|
存储 C++
C++从入门到精通:1.1.4基础语法之控制流
C++从入门到精通:1.1.4基础语法之控制流
|
18天前
|
存储 C++
C++从入门到精通:1.1.3基础语法之运算符
C++从入门到精通:1.1.3基础语法之运算符
|
18天前
|
存储 编译器 C++
C++从入门到精通:1.1.2基础语法之数据类型
C++从入门到精通:1.1.2基础语法之数据类型
|
18天前
|
存储 程序员 编译器
C++从入门到精通:1.1.1基础语法之变量
C++从入门到精通:1.1.1基础语法之变量
|
19天前
|
存储 安全 编译器
C/C++(2)基本语法和数据类型
C/C++(2)基本语法和数据类型
4 0