《C++primer plus》学习笔记——第二章

2024-06-08 08:08

本文主要是介绍《C++primer plus》学习笔记——第二章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、进入C++
    • 1.main()函数的标准
    • 2.cin和cout进行输入和输出的程序必须包含文件iostream
    • 3.头文件名字
    • 4.名称空间
    • 5.使用cout进行C++输出
    • 6.C++源代码的格式化
  • 二,C++语句
    • 1)对于变量声明
    • 2)赋值语句
    • 3)其它C++语句
    • 4)类简介
    • 5)函数
      • A.有返回值的函数
      • B. 函数变体
      • C.用户定义的函数
        • **函数格式**
        • **函数头**
      • D.用户定义的有返回值的函数
      • E.在多函数程序中使用using编译命令
  • 总结

第二章:开始学习C++

一、进入C++

1.main()函数的标准

int main()
{return 0;
}

2.cin和cout进行输入和输出的程序必须包含文件iostream

3.头文件名字

在这里插入图片描述

4.名称空间

如果不用using

Microflop::wanda(".....");Piscine::wanda("....");

上者将其定义放到一个名为Microflop的名称空间,全称如上述所示;
下者的全称如下所示;

iostream中定义的用于输出的cout变量实际上是std::cout,endl实际上是std::endl;

using  namespace std;
表明可以使用std名称空间中定义的名称,而不必使用std::前缀,对于简单程序而言,采用何种名称管理方法无关紧要;上述是一种偷懒的做法,更好的办法是,是使用所需的名称即可;
using std::out;
using std::endl;
using std::cin;

5.使用cout进行C++输出

cout<<".."
双括号括起来的是要打印的消息,在C++中,用双括号括起来的一系列字符叫做**字符串**

在这里插入图片描述

1)控制符endl

表示:重启一行,endl也是在头文件iostream中定义的,位于名称空间std中;

2)换行符

在这里插入图片描述

区别就是:endl能够保证立即显示在屏幕上,而“\n”不能提供这样的保证。

6.C++源代码的格式化

二,C++语句

要将信息项数据存储在计算机中,必须指出信息的存储位置和所需的内存空间。

1)对于变量声明

声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称;
C++的做法是尽可能在首次使用变量前声明它;

2)赋值语句

可以连续使用赋值运算符
在这里插入图片描述

cout的智能行为源自C++的面向对象特性。实际上,C++插入运算符(<<)将根据其后的数据类型相应地调整其行为,这是一个运算符重载的例子。
eg:

int number=25;
cout<<number

程序没有打印number,而是打印存储在number中的整数值,即25。实际上,将这两个操作合二为一了,首先,cout将number替换为当前值25,然后,把值转换为合适的输出字符。
在这里插入图片描述

3)其它C++语句

可以将一条语句放在4行上:

eg:把Now you have 14 carrots.用下面的来表示

cout<<"Now you have ";
cout<<carrots;
cout<<"carrots";
cout<<endl;

4)类简介

定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。

C++类对应于某些语言中的对象类型,而C++对象对应于对象实例或实例变量

函数可以来自函数库,类也可以来自类库。类描述指定了可对类对象执行的所有操作,要对特定对象执行这些允许的操作,需要给该对象发送一条消息。eg:cout对象显示一个字符串,则应向它发送一条消息,告诉他:“对象,显示这些内容!”。
C++提供了两种发送消息的方式:1)使用类方法(函数调用);2)重新定义运算发,eg:cin,cout,

cout<<"…", 就是重新定义<<运算

在这里插入图片描述

5)函数

C++函数分为:有返回值的和无返回值的

A.有返回值的函数

首先是调用过程,如下所示:
在这里插入图片描述

在这里插入图片描述

在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型。C++提供这些信息的方式是使用函数原型语句。

C++程序会为程序中的每个函数提供原型。函数原型之于函数就像变量声明之于变量,需要指出涉及的类型。

eg:
sqart()的描述应该和下面代码中使用的函数相同:

double x;
x=sqrt(6.25)

sqrt()的函数原型像这样:

double sqart(double);

第一个double意味着sqrt()将返回一个double值,括号中的double意味着sqrt()需要一个double参数。原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头(若是函数头,则需要紧接着提供该函数的函数体)。

能够提供原型的两种方法:
1)在源代码文件中输入函数原型
2)包含头文件cmath(or math.h),其中定义了原型(更好,why?对于C++库函数中的每个函数,都在一个或多个头文件中提供了其原型)

函数原型只描述了函数接口,不要混淆函数原型和函数定义。库文件中包含了函数的编译代码,而头文件中则包含了原型。

eg:

在这里插入图片描述

C++允许在程序的任何地方申明新变量,C++还允许在创建变量时,就对她进行赋值,,这称之为初始化,eg:

double side=sqrt(area);

B. 函数变体

在cstlib or stdlib.h头文件相关的库中,包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数,该函数的原型如下:

int rand(boid);

关键字void表明:该函数不接受任何参数。若省略void,则C++将其解释为一个不接受任何参数的隐式申明。eg:my=rand();

C.用户定义的函数

在这里插入图片描述

// ourfunc.cpp -- defining your own function
#include <iostream>
void simon(int);    // function prototype for simon()int main()
{using namespace std;simon(3);       // call the simon() functioncout << "Pick an integer: ";int count;cin >> count;simon(count);   // call it againcout << "Done!" << endl;// cin.get();// cin.get();return 0;
}void simon(int n)   // define the simon() function
{using namespace std;cout << "Simon says touch your toes " << n << " times." << endl;
}                   // void functions don't need return statements

对上面这个函数eg的一些说明

函数格式

有一个函数头,然后是花括号中的函数体

在这里插入代码片在这里插入图片描述

函数头
void simon(int n)

void表明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋给变量的数字。由于simon()没有返回值,因此像如下的调用它:

simp=simon(3);

在这里插入图片描述

这个时候再看看main()函数头,就知道为啥 要return 0;

在这里插入图片描述

这个0返回给操作系统了。

D.用户定义的有返回值的函数

直接看例子:

// convert.cpp -- converts stone to pounds
#include <iostream>
int stonetolb(int);     // function prototype
int main()
{using namespace std;int stone;cout << "Enter the weight in stone: ";cin >> stone;int pounds = stonetolb(stone);cout << stone << " stone = ";cout << pounds << " pounds." << endl;// cin.get();// cin.get();return 0;
}int stonetolb(int sts)
{return 14 * sts;
}

在这里插入图片描述

该例子表明:函数原型描述了函数接口,即函数如何与程序的其它部分交互。参数列表指出了何种信息将被传递给函数,函数类型指出了返回值的类型。

在这里插入图片描述

E.在多函数程序中使用using编译命令

在这里插入图片描述

**

总结

**

在这里插入图片描述

在这里插入图片描述

这篇关于《C++primer plus》学习笔记——第二章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041621

相关文章

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函