C++正式学习(一)

面向对象的思想中,任何事物都可以看作一个对象,所谓万物皆对象。一个再复杂的模型结构都是由千千万万个对象组成的,这是面向对象程序设计语言的基本思想。

在面向对象遍程中,程序员不再面对一个个函数和变量,而是要放眼大局,面对一个个对象来看问题。

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为整数则为以当前设定的输出宽度去输入数值。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C基础上[2],一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的编译器最新版本是Borland C++ 4.5,Symantec C++ 6.1,和Microsoft Visual C++ 2012。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。 C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(Operator Overloading)、多重继承(Multiple Inheritance)、模板(Template)、异常(Exception)、RTTI、命名空间(Name Space)逐渐被加入标准。 C++ 1998年国际标准组织(international standard organization, ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。 1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。先前被临时命名为C++0x的新标准将被称为C++ 2011。C++ 2011取代现行的C++标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C++98以及C++03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology -- Programming languages -- C++ Edition: 3。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值