:基本概念(对象、面向对象编程2.定义实体后,可以不知道此实体的功能是怎样实现的,也能使用它们.
核心概念:
1.数据封装:将一个数据与这个数据有关的操作集合封装在一起,形成一个能动的实体,称为对象.
2.继承:在面向对象语言中,类功能支持层次机制.除根结点外,每个类都有它的你类或基类.除了叶结点外,每个类都有它的子类或派生类.子类可以继承父类的特性,但可以在父类的基础上派生出新类(新特征).
3.多类性: 就相当于一词多义.其表现形式有:
函数重载:
例如:void f(int,int,char);
void f(char,float);
void f(float,float);
void f(int,float);
这几个函数具有相同的函数名f,但其参数据的不同,确定了其函数功能的不同.
虚函数:在C++中,通过继承,基类及其派生类之间构成一个树型结构,树中的每一个类(基类及派生类)者可以说明一个具有虚特性的函数,称为虚函数.
4.类属:
最重要的形式是:类型参数化,即参数化一个软件分量的能力(参数化模板).即C语言中的形参的概念.
5.CRC设计方法:
即:Class name,对象取名;Responsibilities,责任.每个对象完成设计中的一个小目标,它实现了整个系统状态的某一小部分;Collaborators,合作者.每个对象可能会依赖其他对象来完成其责任.这个对象所依赖的对象集合称为它的合作者.
举一个形象的比喻以上概念:
日常生活中常用的电话,我们可以把它看成一个对象,新的电话总是在旧的电话上增强了许多功能,这可以看成子类继承了你类的一些基本特征;我们用电话不需要知道该电话的结构哐内部元件是如何组成的,那么这就是电话这个对象具有数据封装性.不同的电话其功能不一样,但同一个公司出产的电话具有产品的阶段性,在同一阶段出产的多个品种我们可以把它看成是电话的多类性.
学习C++面临的问题:
1.建立面象对象的思维方式,即考虑学习面向对象的设计方法。
2.用C++语言编程,即使用C++语言的编程方法。
概念:
对象:将某一数据和使用该数据的一组基本操作或过程封装在一起,而将些封装体看作一个实体。
其性质:1.将密切关的数据和过程封装起来定义为一个实体.
C++基本语法及结构
一.C++的输入和输出
输入流用">>"表示,输出流用"<<"表示.
例如我们要在屏幕上输出:"你是第几次到三剑侠网站.",则程序语句为:
#include<iostream.h> //包含的标准类头文件
void main() //主程序入口
{ //程序内容
int num=0;//定义num变量
cin>>num; //用输入流对变量num赋值
cout<<"你是第";//用输出流输出字符串
cout<<num; //输出变量
cout<<"次到三剑侠网站."; //用输出流输出字符串
} //程序结束
二.注释
注释可以用:"//"和"/*...*/",一般用"//".其例子见上面的注释.
三.new 和 delete
new 及 delete 功能是动态存储分配和释放功能,和C语言中的malloc和free功能相不多.
格式:p=new Type;
delete p;
其中:p是指向该数据类型的指针;type是数据类型名;p保存new分配的内存的首地址.
例如如下例子:
#include <iostream.h>
void main()
{
float *p;
p=new float; //为float动态分配空间
*p=12.55;
cout<<*p;
delete p; //释放float动态分配的空间
}
四.常量描述:const
常量定义形如:const long varname=10;注意:用C的为:#define varname 10
const与指针一起使用的情况:
(1)指针前加const,使指向的对象为常量,而不是指针为常量.
const char *p="dfadsf"
(2)将指针本身,而不是它指向的对象声明为常量,采用运算符*const.
char *const p="adfasd"; //常指针
(3)如果将两上目标都定义为常量,二者都要声明为const.
const char * const p="abcd";
p[3]='a'
p="adfd";
五.内联函数inline
形如:inline void function_name(int a,int b);
功能:编译器在编译时,在调用函数名的地方用函数体替换.这样便于程序维护,加快代码执行.
六.函数原型
形如:int functionname(int a,float b)
它确定了函数返回的类型,并且它能够确定函数使用的参量的类型和个数.
七.函数的缺省参数调用
形如:void function_name(int i=1)
缺省调用的两种形式:
function_name(10);//传递给i变量10;
function_name();//传递给i变量1;
八.引用(给对象取一个别名)
作用:作为参数传递或作为返回类型,也可以独立引用.
例如:
int i;
int &j=i;
int k=9;
j=k;
j是i的地址别名,所以给k=9;实际上是9被赋值给j所联系的存储单元i中,因此i的内容为9.
九.强制类型转换
格式:(类型名)表达式
例如:int i=int(1.3);//则i为整型.
十.枚举名和结构名同是类型名
枚举名和结构名同是类型名,所以不必在枚举名或结构名前冠以enum,struct了.这与C语言有一定区别.
例如:enum week{monday,thesday,Wednesday,thursday,friday,saturday,sunday};
struct string{
char * str;
int length;
}
实例化后可以说明为:week week1;string str1;
类的概念及结构
一.类的定义:
请看例子:
class string //定义类 类名
{ //类体
private: //私有成员定义
int length;
char * contents;
public: //公有成员定义
string(); //构造函数
~string(); //析构函数
int get_length(); //成员函数
char * get_contents();
int set_contents(int in_length,char *in_contents);
int set_contents(char * in_contents): //set_contents函数重载
protected: //保护级
}
二.定义变量
string x,*Y
三.类说明之外定义一个类的成员函数.例如:
int string::set_contents(int in_lenght,char * in_contents)
{
lenght=in_length;
contents=in_contents;
return(1);
}