第二章 基本语言

旧城冷巷雨未停 提交于 2019-12-15 02:31:12

第一节 语言特性 、工程构成、可移植性

 

语言特性:过程式、对象式的程序设计

a. 面向过程的程序设计(过程式的程序设计:c语言程序设计):从上往下,逐步求精,按顺序一步一步把问题解决

结构:学生:学号,名字,性别,成绩

在c语言中,要用结构的话,需要定义一个数与该结构的变量                 

 

b. 基于对象的程序设计 和 面向对象的程序设计

在C++中,把结构叫成‘类’,如果要使用类,这里就不叫定义结构变量,而是叫做定义一个对象;在类中除了可以定义成员变量还可以定义一些成员函数。这种功能包含在类中,需要的时候通过定义一个对象的方式来调用程序。这种程序书写的方式,就叫做基于对象的程序设计方法。

C++语言有下面特性:

继承性(类的继承)

多态性(父类和子类同名函数的调用) 

以上特性升华了基于对象的程序设计,叫面向对象的程序设计

面向对象程序设计的优点:

易维护

易扩展

模块化:通过设计各种访问级别,来限制别人对类的访问,也保护了数据的安全。

可移植性

不同系统可以移植源代码,但是不能移植二进制文件。

 

第二节 命名空间简介、基本输入输出精解

 

命名空间概念简介

如果在同一个project里面有两个cpp文件写了一个同名函数,那么在编译的时候后面的文件会报错,因为命名冲突了。命名空间就是为了防止名字冲突而引入的一种机制。系统中可以定义多个命名空间,每个命名空间都有自己的名字,不可以同名。可以把命名空间看做一个作用域,在一个命名空间里面定义函数,跟另外一个命名空间里定义的函数,即便同名,也不影响。

(1)命名空间的定义

namespace():命名空间名

{

......

}

(2)命名空间名的定义可以不连续,甚至可以写在多个文件钟。如果以往没有命名这个空间,那么“namespace命名空间名”这种写法就相当于定义了一个命名空间,如果以往已经定义了一个空命名空间,那么“namespace命名空间名”这种写法就相当于打开已经存在的命名空间并为其添加新成员的声明

(3)外界访问某个命名空间中的函数(假如定义了 radius()函数)

格式:命名空间::实体名

或者在代码行最前面使用 “using namespace 命名空间”,这样就可以直接使用radius()函数了。

基本输入输出cin cout精解

输入输出流

 

第三节  auto、头文件防卫、引用、常量

(1)局部变量及初始化

随时用到 随时定义

比较少见的定义变量的方式

int a{5};

int a[] {11,12,34};

(2) auto:变量的自动类型推断

auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型;(声明的时候要赋予初值[初始化])

auto自动类型推断发生在编译期间。所以使用auto不会造成程序效率降低

auto value=true;//bool
auto ch='a';//char

(3)头文件的防卫式声明

头文件1声明了一个全局变量g_globalh1,头文件2声明了一个全局变量g_globalh2,并且include头文件1,在源代码里面i同时nclude头文件1和头文件2时就会出现变量g_globalh1的重定义。为了解决这个问题,需要在两个头文件中分别写上如下代码:

#ifndef __HEAD1__H__
#define __HEAD1__H__

int g_globalh1=8;

#endif;
#ifndef __HEAD2__H__
#define __HEAD2__H__

#include "head.h"
int g_globalh2=10;


#endif;

当 __HEAD1__H__没有被定义过的时候执行下面的代码块,定义g_globalh1,当第二次执行的时候,__HEAD1__H__已经被定义过了,所以后面的代码不再执行。

(4)引用

引用理解成:为变量起了另外一个名字,一般用&符号表示。起完别名后,这个别名和变量本身就看成同一个变量,定义引用时必须初始化,而且两个变量的类型要相同。引用作为函数参数,会改变实参的值。

int value=10;
int &refval=value;

 (5)常量

const int var=7;\\一种承诺,表示不会去改变这个变量

constexpr  int var=1;\\C++11引入,在编译的时候求值

(int &)var   表示将var的引用强制转化为整型

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!