面向对象的思想中,任何事物都可以看作一个对象,所谓万物皆对象。一个再复杂的模型结构都是由千千万万个对象组成的,这是面向对象程序设计语言的基本思想。
在面向对象遍程中,程序员不再面对一个个函数和变量,而是要放眼大局,面对一个个对象来看问题。
OO思想的特点:1、封装:把对象的属性和方法结合成一个独立的系统单位,并尽可能的隐藏对象的内部细节。
2、抽象:抽象的过程是对具体问题进行概括的过程,是对一类公共问题进行统一描述的过程。
3、继承:子类对象拥有与其基类型相同的全部属性和方法,称为继承。
4、多态:多态是指在基类中定义的属性和行为被子类继承后,可以具有不同的数据类型或表现行为等特性。
5、重载:重载事实上就是允许我们按照不同的方式使用同一个操作符。
即<<在C语言中属于位运算的左移操作符,但在C++cout对象中使用却不一样。
————————————————————————————————————
求一个数组中各个元素的和,第一种是c语言实现,第二种是C++实现。
#include <stdio.h>
#include <stdlib.h>
int addArray(int array[],int n);
int main()
{
int s,data[]={1,2,3,4,5,6,7,8,9};
int size = sizeof(data)/sizeof(data[0]);
s = addArray(data,size);
printf("%d",s);
return 0;
}
int addArray(int array[],int n)
{
int i,s=0;
for(i=0;i<n;i++)
{
s+=array[i];
}
return s;
}
#include <iostream>
using namespace std;
int addArray(int array[], int n);
int main()
{
int s, data[] = { 1,2,3,4,5,6,7,8,9 };
int size = sizeof(data) / sizeof(data[0]);
s = addArray(data, size);
cout << s << endl;
return 0;
}
int addArray(int array[], int n)
{
int i, s = 0;
for (i = 0; i<n; i++)
{
s += array[i];
}
return s;
}
这个小程序展现了我们对C++语言中对象的第一次使用,对象就是main函数中的那个cout。(cout是一个输出流对象,它是“console out(控制台输出)”的缩写,是属于basic_ostream类的对象。ostream类在iostream头文件中定义。)
这两个程序的不同点就是宏定义中的内容还有一个using namespace std;。
1关于宏定义中的内容为何是iostream而不是之前的iostream.h ,是因为.h后缀是c92标准时期的要求,在C99标准中对于C++语言引入了命名空间这一概念,所以把头文件后缀.h去掉了。
2.using namespace std;这条指令带来的概念是名称空间,C++标准库中所使用的所有标识符(类、函数、对象等的名称)都是在同一个特殊的名称空间(std)中定义的。(用C++做大型游戏开发,数据库开发的时候防止出现局部变量和全局变量之间的命名重复问题),如果没有这条指令,我们将要使用std::cout这样的语法来调用输出流对象。
3.<<是C语言中左移运算符,但在这里属于运算符的重载,也是C++的一个大特性
————————————————————————————————————
通过这个程序来说明输入输出的方法,同样是有C语言版本和C++版本。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,sum = 0;
char ch;
printf("请输入一串整数和任意数目的空格:");
while(scanf("%d",&i)==1)
{
sum+=i;
while((ch = getchar())==' ')//屏蔽空格
;
if(ch=='\n')
break;//跳出while循环
ungetc(ch,stdin); //将ch储存的字符退回stdin输入流中
}
printf("%d",sum);
system("pause");
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int i, sum = 0;
cout << "请输入任意个数字和空格:";
while (cin >> i)
{
sum += i;
if (cin.peek() == ' ')
{
cin.get();
}
if (cin.peek() == '\n')
{
break;
}
}
cout << "各个数字的和为 " << sum << endl;
return 0;
}
C++版本分析:这个程序使用了流对象cin。这个对象的类为istream,它知道如何从用户终端读取数据。
1、cin中>>操作符为重载过后的提取操作符,它从输入流对象cin提取一个整数。(当我们从键盘输入数据的时候,对应的字符将输入到操作系统的键盘缓冲区中,当按下“enter”键时操作系统把键盘缓冲区的内容传输到cin流的内部缓冲区,“>>”操作符随后从这个缓冲区提取需要的信息。)
2、cin cout会根据变量的数据类型自动输入或输出一个数值。
3、cin、cout对象的多个方法:cin.ignore(n),n为自然数,作用为输入时忽视n个字符,从第n+1个字符开始输入。
cin.getline(地址,n),n为字节数,将缓冲区的数据中的前n个字符输入到指定的地址。
cin.peek(),在缓冲区中挑选一个字符进行判断。
cin.get(),在缓冲区中获取一个字符,如果获取成功则返回值为该字符,用于单个字符的赋值。
cin.read(地址,n)将缓冲区的n个字符读取到指定地址中。
cin.gcount()将缓冲区中的字符数作为返回值返回。
cout.write(地址,20)将此地址作为开始后的20个字符输出。
cout.precision()其实是输出流cout的一个格式控制函数,也就是在iostream中的一个成员函数。precision()返回当前的浮点数的精度值,而cout.precision(n)其实就是在输出的时候设定输出值以新的浮点数精度值显示,即小数点后保留n位。
cout.width()是获取当前的输出宽度,cout.width(n),n为整数则为以当前设定的输出宽度去输入数值。