C++学习笔记:C++入门

从C到C++

C语言盛行的同时,暴露出了它的局限性。

  1. C语言的检查机制相对较弱,这使得程序中的一些错误不能再编译时被发现。
  2. C本身几乎没有支持代码重用的语言机制,一次一个程序员精心设计的程序,很难为其他程序所用。
  3. 当程序的规模达到一定程度时,程序员很难控制程序的复杂性。
    为了满足管理程序的复杂性,1980年贝尔实验室的Bjarne Stroustrup开始对C进行改进进行补充。最初的成果称为“带类的C”,1983年正式取名为C++,在经历3次的C++修订后,于1994年制定了ANSI C++标准的草案。以后又经过不断完善,成为目前的C++,C++仍在不断发展中。

程序与语言

高级语言与低级语言

  1. C++是高级语言,机器语言是低级语言,汇编语言基本上是低级语言。
    C与C++
  2. C++语言包括过程性语言部分和类部分,过程性语言与C并无本质的差别,无非版本提高了,功能增强了。类部分是C中所没有的,它是面向对象程序设计的主体。要学面向对象程序设计,首先必须具有过程性语言的基础。所以学习C++,必先学习其过程性语言部分,然后再学习类部分。
  3. 从语言的能耐上来说,C能很好的支持结构化程序设计,而C++既能很好的支持结构化程序设计,又能很好的支持面向对象程序设计甚至模板化程序设计。所以,正如C++的泰斗Bjarne Stroustrup所说,“先学C没有必要”。
  4. 但是学过C能够促进C++的学习。

结构化程序设计

主要思想是功能分解并逐步求精。当一些任务十分复杂以致无法描述时,可以将它拆分为一系列较小的功能部件,直到这些自完备的子任务小到易于理解的程度。
结构化程序语言设计成功为处理复杂问题提供了有力的手段。然而当数据量增大时,数据与处理这些数据的方法之间的分离使程序变得越来越难以理解。对数据处理能力的需求越强,这种分离所造成的副作用越显著。

面向对象程序设计

本质是把数据和处理数据的过程当成一个整体——对象。
C++充分支持面向对象程序设计。面向对象程序设计的实现需要封装和数据隐藏技术,需要继承和多态性技术。

  1. 封装和数据隐藏
    C++通过建立用户定义类型(类)支持封装性和数据隐藏。完好定义的类一旦建立,就可以看成是完全封装的实体,可以作为一个整体单元使用。类的实际内部工作应当隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它就行。
    eg. 当一个技术员要安装一台计算机时,他将各个设备组装起来。当他想要一个声卡时吗,不需要用原有的集成电路芯片和材料去制作一个声卡,而是购买一个他需要的某种功能的声卡。技术员关心的是声卡的功能,并不关心声卡内部的工作原理。
  2. 继承和重用
    C++采用继承支持重用的思想,程序可以在扩展现有类型的基础上声明新类型。新子类是从现有类型派生出来的 ,成为派生类。
    eg. 新型电视机是在原有的型号基础上增加若干中功能得到的,所以新型电视机是原有电视机的派生,继承了原有电视机的所有属性,并在此基础上增加了新的功能.
  3. 多态性
    通过继承的方法构造类,采用多态性为每个类指定表现行为。
    eg. 学生类应该有一个计算成绩的操作。大学生继承了中学生,或者说对中学生的延申。对于中学生,计算成绩的操作表示语文、数学、英语等课程的成绩计算;而对于后继的大学生,计算成绩的操作表示高等数学、计算机、普通物理等课程的计算。

程序开发过程

大多数现代的编译器都提供了一个集成开发环境。在这样一个环境中,一般是从菜单中选定compile或make或build命令,来生成可执行的计算机程序。
程序员编制的源程序被编译(compile)后,会生成一个目标文件,这个文件通常以.obj作为文件扩展名。该目标文件为源程序的目标代码,即机器语言指令。但这仍然不是一个可执行的程序 ,为了把它转换为可执行程序,必须进行连接(link)。
库(.lib)是一组由机器指令构成的程序代码,是可连接文件。库由标准库和用户生成的库。标准库是由C++提供的,用户生成的库是由软件开发商或程序员提供的。文件与库连接的结果,即生成计算机可执行的程序。

C++程序

#include <iostream>
using namespace std;

int main(){
    
    
	int a, b, result;
	cout << "please input two numbers:\n";
	cin >> a >> b;
	result = 3 * a - 2* b + 1;
	cout << "result is" << result << endl;
}
#include <iostream>
#include <cmath>
using namespace std;

double max(double x, double y);

int main()
{
    
    
	double a, b, c;
	cout << "input two numbers:\n";
	cin >> a >> b;
	c = max(a, b);
	cout << "the squart of maximum = " << sqrt(c);
}

double max(double x, double y)
{
    
    
	if(x > y)
		return x;
	else
		return y;
}

猜你喜欢

转载自blog.csdn.net/m0_49564079/article/details/114329316