C++初学(2)

2.1、其他简单C++语句例子

下面这个程序要求运行时输入值

复制代码
#include <iostream>
int main()
{
	using namespace std;
	int yuanshi;
	cout << "How many yuanshi do you have?" << endl;
	cin >> yuanshi;
	cout << "Here are two more." << endl;
	yuanshi += 2;
	cout << "Now you have " << yuanshi << " yuanshi." << endl;

	return 0;
}

下面是该程序的运行情况

该程序包含两项新特性:用cin来读取键盘输入以及将四条输出语句组合成一条。下面分别介绍它们。

2.1.1、使用cin

上面输出表明,从键盘输入的"158"最终被赋给变量yuanshi。下面就是执行该功能的语句:

复制代码
cin>>yuanshi;

cin的用法与cout相反,iostream文件将cin定义为一个表示这种流的对象。输出时,<<运算符将字符串插入到输出流中;输入时,cin使用>>运算符从输入流中抽取字符,需要在运算符右侧提供一个变量,以便接收到抽取的信息。

2.1.2、使用cout进行拼接

复制代码
cout << "Now you have " << yuanshi << " yuanshi." << endl;

这其实将几个语句进行合并输出,得出的结果与下面相似

复制代码
cout<<"Now you have ";
cout<<yuanshi;
cout<<" yuanshi.";
cout<<endl;

或者

复制代码
cout<<"Now you have ";
     <<yuanshi;
     <<" yuanshi.";
     <<endl;

2.1.3、类简介

类是C++中面向对象编程(OOP)的核心概念之一。

类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息及可对数据执行哪些操作。**也就是说,类定义描述的是数据格式及其用法,而对象则是根据数据格式创建的实体。**换句话说,类就好比985、211,而对象就好比清北。

现在来看cout,它是一个ostream类对象。ostream类定义(iostream文件的另一个成员)描述了ostream对象表示的数据以及可以对它的操作。

知道了类是用户定义的类型,但作为用户,并没有设计ostream和istream类。就像函数可以来自函数库一样,类也可以来自类库。这些类定义位于iostream文件中,没有被内置到编译器中。类描述指定了可对类对象执行的所有操作。要对特定对象执行这些允许的的操作,需要给该对象发送一条信息。C++提供了两种发送信息的方式:一种方式是使用类方法(本质上是函数调用,下面会讲),另一种是重新定义运算符,cin和cout用的就是这个方法。

2.2、函数

函数用于创建C++程序的模块,对C++的OOP定义至关重要,现在了解函数的一些基本特征。

C++函数分为两种:有返回值的和没有返回值的。下面首先来看有返回值的函数。

2.2.1、使用有返回值的函数

有返回值的函数将生成一个值,而这个值可赋给变量或在其他表达式中使用。例如,C/C++库包含一个名为sqrt()的函数,它返回平方根。假如要计算6.25的平方根,并将这个值赋给变量x,则可以在程序中使用下列语句:

复制代码
x=sqrt(6.25);

括号内的参数传递给函数,得到的结果叫作返回值。在使用函数之前,C++编译器必须知道函数的参数定义和返回值类型。C++提供这种信息的方式是使用函数原型语句。

注:C++程序应当为程序中使用的每个函数提供原型。

复制代码
double sqrt(double);

表示函数需要一个double参数,返回一个double参数。原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头。在程序使用函数时,可以通过两种方式提供原型:

1.在源代码文件输入函数原型

2.包含定义了原型的头文件

第二种更好,更有可能使原型正确。库文件包含了函数的编译代码,而头文件则包含了原型。

应在首次使用函数之前提供其原型,通常的做法是把原型放到main()函数定义的前面。

在C++中,cin和cout知道如何将信息转化为double类型,这些对象都很智能化。

2.2.2、函数变体

有些函数需要多项信息。如数学函数pow()。

复制代码
double pow(double,double);

另外一些函数不接受任何参数。如随机函数rand(),并返回一个随机函数。

复制代码
int rand(void);

关键字void明确指出,该函数不接受任何参数。如果省略void,则C++将其解释为一个不接受任何参数的隐式声明。

如果在函数之前加上void,代表该函数没有返回值。

2.2.3、自定义的函数

1.函数格式:和main()函数一致。

2.函数头:yuanshen的函数头是void yuanshen (int n),开头的void表明yuanshen()没有返回值,因此不能在赋值使用它。

2.2.4、在多函数程序中使用using编译指令

using namespace std;

1.将其放到main()函数前面,能让所有函数使用名称空间std的所有元素。

2.放到指定函数定义中,让该函数能使用名称空间std的所有元素。

3.其他用法与上一篇相似。

今天就那么多

相关推荐
Evand J21 分钟前
【MATLAB例程】到达角度定位(AOA),平面环境多锚点定位(自适应基站数量),动态轨迹使用EKF滤波优化。附代码下载链接
开发语言·matlab·平面·滤波·aoa·到达角度
细节控菜鸡1 小时前
【2025最新】ArcGIS for JS 实现随着时间变化而变化的热力图
开发语言·javascript·arcgis
Pluto_CSND1 小时前
Java实现gRPC双向流通信
java·开发语言·单元测试
京东零售技术2 小时前
扛起技术大梁的零售校招生们 | 1024技术人特别篇
算法
原来是猿2 小时前
谈谈环境变量
java·开发语言
应用市场2 小时前
本地局域网邮件管理系统:从原理到实现的完整指南
开发语言
Tony Bai2 小时前
【Go 网络编程全解】12 本地高速公路:Unix 域套接字与网络设备信息
开发语言·网络·后端·golang·unix
爱coding的橙子2 小时前
每日算法刷题Day78:10.23:leetcode 一般树7道题,用时1h30min
算法·leetcode·深度优先
Swift社区2 小时前
LeetCode 403 - 青蛙过河
算法·leetcode·职场和发展
地平线开发者2 小时前
三种 Badcase 精度验证方案详解与 hbm_infer 部署实录
算法·自动驾驶