IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 《C++面向对象程序设计》(清华大学出版社)重要知识点(二) -> 正文阅读

[C++知识库]《C++面向对象程序设计》(清华大学出版社)重要知识点(二)

本文章仅记录《C++面向对象程序设计》(第2版)书中个人认为的重点,基础知识点不做记录。
原书购买链接:C++面向对象程序设计
![在这里插入图片描述](https://img-blog.csdnimg.cn/3e4b8b035fee429c95dddaf442c94c47.png

一.标识符

  • 标识符可以由字母、数字以及下画线组成,但必须由字母或下画线开头,并且区分大小写字母
  • 用户自定义的标识符中不能连续出现两个下画线,也不能以下画线紧连大写字母开头
  • 定义在函数体外的标识符不能以下画线开头

二.初始化

1.拷贝初始化

  • 用等号"="初始化变量

    类名 变量名= 初始值;

2.直接初始化

  • 直接初始化是将初始值写在一对圆括号中

    类名 变量名(初始值);

  • 如果要初始化的变量是类类型的,例如一个平面坐标点Point类,初始值需要指定x和y轴两个坐标值,如(10,20),用"="的形式显然无法应对。

    示例:

    Point location = 10, 20; //错误形式
    Point location(10, 20);  //直接初始化,正确
    

3.列表初始化

  • 列表初始化的初始值由一对花括号括起,可以是一个值或多个逗号隔开的初始值列表

    示例:

    int count{0};
    Point location = {10,20};	//两个初始值
    Point location{10,20};		//省略等号的形式
    
  • 对内置类型来说,直接初始化和拷贝初始化没有差别,但列表初始化会有不同。如果使用列表初始化且初始值存在丢失信息的风险,编译器将报错

    示例:

    long double ld=3.1415926536;
    int a{ld};			//错误:从long double到int的窄化转换
    int b={ld};			//错误:从long double到int的窄化转换
    int c(ld);			//正确
    int d=ld;			//正确
    

4.默认值

  • 如果定义变量时没有指定初始值,即没有显式地初始化,则变量被默认初始化,此时变量被赋予默认值
  • 在所有函数之外定义的内置类型变量,默认值为0
  • 在函数体内部定义的内置类型变量,不被初始化,默认值是未定义的,访问未定义的值将引发错误

三.变量声明

  • 变量声明的作用是使程序知道该变量的类型和名字。声明不会引起内存分配,程序中可以包含对同一变量的多个声明

  • 如果在一个文件中定义了一个全局变量,其他的文件中要使用这个变量时就必须声明该变量

    声明全局变量的格式为: extern 类型 变量名;

? 示例:

//module1.cpp
int k=2;			//定义变量k,同时也是在module1.cpp中对k的声明
//module2.cpp		
extern int k;		//声明变量k,说明在在module2.cpp之外的某处有k的定义
int main()
{
    int t=3;		//定义变量t,也是对t的声明
    k=t+2;			//使用变量k
}
  • 任何包含了显式初始化的声明即成为定义,而不是声明

    示例:

    extern double pi= 3.1416;	//定义变量pi并初始化
    

四.名字的作用域

  • 同一作用域中不能重复定义相同的名字,但内层作用域中可以重新定义外层作用域已有的名字。此时,在内层作用域中,起作用的是内层作用域中的名字定义,外层作用域中的定义不再起作用,称为被隐藏。要显式访问全局变量,使用作用域解析符"::"

    示例:

    int reused = 12;		//reused有全局作用域
    int main()
    {
     	int unique = 25;   	//unique有块作用域
        cout <<reused <<" " <<unique <<endl;	//输出:12 25
        int reused = 9;		//块作用域内重复的reused
        cout <<reused <<" " <<unique <<endl;	//输出:9 25
        cout <<::reused <<" " <<unique <<endl;	//输出:12 25
    }
    

五.const对象

  • 程序中的有些数据是自始至终保持不变的,称为常量

  • const限定符可以将一个对象限定为只读的,在程序运行期间不能修改

    const int Bufsize = 1024;

    因为const对象的值不能修改,所以必须在定义时进行初始化,初始值可以是任意复杂的表达式

    示例:

    const int size = getSize();	//正确:运行时用函数的返回值初始化size
    const int a = 20;			//正确:编译时初始化a
    const int b;				//错误:b未初始化
    

六.auto和decltype

1.auto类型说明符

  • 用auto声明变量的类型,编译器会自动分析表达式的类型,推断出变量的实际类型

    定义auto变量必须有初始值

? auto 变量名 = 初始值

2.decltype类型指示符

  • decltype的作用是选择并返回操作数的类型

    示例:

    decltype(sizeof(int)) size;	//size的类型是sizeof(int)结果的类型
    const int ci = 0;
    decltype(ci) x = 1;			//x的类型是const int
    decltype(f()) y = sum;		//y的类型是函数f()的返回值类型
    

3.类型别名

  • typedef关键字

    typedef 类别名 别名

  • using别名声明

    using 别名 = 类型名

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:05:06  更:2022-09-25 23:06:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:30:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码