C++第一章:C++语言概述

一、计算机系统组成

二、计算机基本结构

三、指令、程序和软件

(一)指令

        指令是计算机执行某种操作的机械命令,它可以被计算机硬件直接识别和执行。计算机指令用二进制代码表示,一条指令通常由两个部分组成:

                                     

(二)程序

        计算机程序是指完成一定功能的指令的有序集合。

(三)软件

        软件是指程序、程序运行所需要的数据以及开发、使用、维护这些程序所需要的文档的集合。

四、语言

            按程序设计语言发展历程可分为:机械语言、汇编语言、高级语言三类。

     4.1机器语言

        机器语言是由二进制0和1按一定的规则组成的、能被计算机直接理解和执行的指令集合。机器语言中的每一条语句实质上是一条指令。

     4.2汇编语言

        汇编语言,将机器指令的代码用英文助记符来表示。其优点是 克服了机器语言难学难懂,保留了机器语言运行速度快,占用空间小的特点。

    4.3高级语言

        C++/C/Java等。

五、C++语言发展的里程碑

1979年  Bjarne Stroustrup开发设计

1998年  ANSI/ISO C++标准建立

        注:国际标准C++98 通过了 命名空间、标准模板库、通用算法类、字符串类型等。

1998年《The C++ Programming Language》第三版   

2003年  ISO-IEC 14882-2003 (简称C++03版本)

        注:对第一版进行错误修订、减少多义性。

2011年ISO-IEC 14882-2011(简称C++11版本)

        注:国际上公认正式标准。

六、C和C++的联系

        C++保留了C语言原有的所有优点,增加了面向对象的机制

        ②C++是由C发展而来的,与C兼容,C++是C的超集

        ③用C语言写的程序基本上可以不加修改的用于C++。

        ④C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。

七、关键字

        关键字又称为保留字,是C++规定的有特殊含义的词语。主要是关于数据类型和语句的词语

八、标识符(*******

        ①标识符仅由大小写字母、数字和下划线组成,且第一个字符必须是字母或下划线。

        ②字母区分大小写。

        ③标识符不能是C++中的关键字。

九、C++程序的注意事项

        ①C++程序总是从main函数开始执行的。

        ②书写格式自由。

        ③分号是语句的组成部分,表示语句结束

        ④程序加注释方便阅读。

十、C++特点

        C++的三大特性:继承、多态、封装
    1、继承

             被继承的是父类(基类),继承出来的类是子类(派生类),子类拥有父类的所有的特性。
             继承方式有公有继承、私有继承,保护继承

  注:默认是私有继承。

    (1)公有继承中父类的公有和保护成员在子类中不变,私有的在子类中不可访问。
    (2)私有继承中父类的公有和保护成员在子类中变为私有,但私有的在子类中不可访问。
    (3)保护继承中父类的公有和保护成员在子类中变为保护,但私有的在子类中不可访问。
注: c++语言允许单继承和多继承。
    优点:继承减少了重复的代码、继承是多态的前提、继承增加了类的耦合性。
    缺点:继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现;父类通常至少定义了子 类的部分行为,父类的改变都可能影响子类的行为;如果继承下来的子类不适合解决新问题,父类必须重写或替换,那么这种依赖关系就限制了灵活性,最终限制了复用性。

        虚继承:为了解决多重继承中的二义性问题,它维护了一张虚基类表。

2、多态

        多态性是指对不同类的对象发出相同的消息将会有不同的实现。

        C++有两种多态,称为动多态(运行期多态)和静多态(编译器多态)静多态主要是通过模板来实现,而动多态是通过虚函数来实现的。即在基类中存在虚函数(一般为纯虚函数)子类通过重载这些接口,使用基类的指针或者引用指向子类的对象,就可以调用子类对应的函数,动多态的函数调用机制是执行器期才能确定的,所以他是动态的。

        优点:大大提高了代码的可复用性;提高了了代码的可维护性,可扩充性。
        缺点:易读性比较不好,调试比较困难; 模板只能定义在头文件中,当工程大了之后,编译时间十分的变态。

3、封装

        隐藏类的属性和实现细节,仅仅对外提供接口,
        

        封装性实际上是由编译器去识别关键字public、private和protected来实现的,体现在类的成员可以有公有成员(public),私有成员(private),保护成员(protected)。私有成员是在封装体内被隐藏的部分,只有类体内说明的函数(类的成员函数)才可以访问私有成员,而在类体外的函数时不能访问的,公有成员是封装体与外界的一个接口,类体外的函数可以访问公有成员,保护成员是只有该类的成员函数和该类的派生类才可以访问的。

        优点:隔离变化;便于使用;提高重用性;提高安全性。
        缺点:如果封装太多,影响效率;使用者不能知道代码具体实现。

补充:重载和覆盖

 (1)定义:
        重载:写一个与已有函数同名但是参数表不同的函数。
        覆盖:虚函数总是在派生类中被改写,即函数名和参数都一样,只是函数的实现体不一样。
 (2)类的关系区别:
        覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。

十一、代码案例

1.1  输出 hello,world

#include<iostream>
using namespace std;   //使用标准命名空间
int main(void)  /*主函数 */
{
	cout<<"hello,world"<<endl;  //输出,endl表示换行
	return 0;     /*主函数正常结束返回0*/ 
 } 

1.2 计算任意两整数和

#include<iostream>   //标准输入输出函数库 
using namespace std;
int main(void)
{
	int a,b,sum;   //定义三个整形变量 
	cin>>a>>b;   //输入两个整数 
	sum=a+b;    //计算两数和 
	cout<<"a+b="<<sum<<endl;  //输出结果sum 
	return 0;
}

1.3 计算a-b 的平方根

#include<iostream>   //标准输入输出函数库 
#include<cmath>    //数学函数库 
using namespace std;
double root(double x,double y)//root函数求x-y的平方根 
{
	if(x>=y)  //只有x大于等于y时计算x-y的平方根 
		return sqrt(x-y);
	else     //否则返回0 
		return 0;
 } 
int main(void)
{
	double a,b;  //定义两个双精度浮点型变量 
	cin>>a>>b;   //输入a和b 
	cout<<root(a,b)<<endl; //输出结果 
	return 0;
}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值