当前位置:文档之家› C语言的类和对象

C语言的类和对象

C语言的类和对象【类实现了C++面向对象程序设计的基础,我们使用类来定义对象的属性,类是C++封装的基本单元。

】一、----- 类使用关键字class创建类,一个类声明定义了一个连接代码和一个数据的新类型,这个新的类型又可以用来声明该类的对象。

因此,类又是逻辑逻辑抽象概念,儿对象是物理存在的,也就是说对象是类的实例。

类的声明语法上和结构相似。

[一下是完整的类的形式]class class_name{private data and functionsaccess_specifier:data and functionsaccess_specifiter:data and functions//……..access_specifier:是data and functions}object_list;其中,object_list是任选项,如过存在,他声明类的对象。

access_specifier为下面的三个关键字之一:Public private protected默认时,在类声明的函数和数据属于该类私有,只能被该类的成员访问。

如果使用,pubilc访问限定符号,函数和程序就可以被其他部分访问。

Protected访问限定符,仅在涉及继承的时候才需要(十五章了解)。

访问限定符已经使用,其作用就保持到遇到别的访问限定符或者达到类声明的结束处。

在类声明内可以任意改变访问说明符号,对于某些声明,可以转换位public,然后再转换成private。

[如下所述]/*******************************··构造函数和析构函数学习···*******************************///Using a constructor and destructor./*******************************声明C++ 程序头文件*******************************/#include <iostream>#include <string.h>#include <conio.h>#include <iostream>/*******************************·名字空间:组织大型的程序结构·*******************************/using namespace std;/*******************************·····全局变量声明·····/******************************/#define SIZE 1024/******************************* ················/******************************/class employee{char name[SIZE]; //private by deaulte public:void putname(char *n);void getname(char *n);private:double wage; //now,private again public:void putwage(double w); //back to publicdouble getwage();};void employee::putname(char *n){strcpy(name,n);}void employee::getname(char *n){strcpy(name,n);}void employee::putwage(double w){wage = w;}double employee::getwage(){return wage;}int main(){employee ted;char my_name[1024] = "\0";ted.putname("Yigao Wu\n");ted.putwage(12000);ted.getname(my_name);cout << my_name << "makes $\n\n";cout << ted.getwage() << "per year.\n";cout << employee.wage << "per year.\n";system("pause"); /*程序的停止按键提示*/ return 0;}【类内频繁使用访问限定符唯一优点是:通过把一个类各个部分可视的组织在一起,可以使阅读程序者很好的阅读和理解,对于编译器没有什么区别。

在类中声明的函数称之为成员函数。

成员函数可以访问类的所属的所有的任何成员(也称为实例变量),类的任何元素都可被当做该类的成员。

】对于成员也有一些限制,非静态成员变量没有初值,成员不能成为当前正被声明声明的类的对象(虽然一个成员可以是指向当前正被声明的类的指针)。

成员不能声明为auto、extern或register。

可以使一个类的所有数据成员为该类私有,这是实现封装方法的一部分,然而有时候也需要一个或者是几个为公有的(例如:为了获取较快的执行速度,频繁使用的变量是全局可访问的)。

一旦一个变量变成了公有的,在用户程序的所有的地方都可以访问这个变量,访问公有的数据的成员的语法与调用成员函数的语法是一样“:”指定对象名称,点运算符和变量名称。

/*******************************声明C++ 程序头文件*******************************/#include <iostream>/*******************************·名字空间:组织大型的程序结构·*******************************/using namespace std;/*******************************·····*******************************/class employee{public:int i,j,n,m;};int main(){employee em_one,em_two;em_one.i = 1;em_two.i = 2;em_one.j = 3;em_two.j = 4;cout << "调试函数\n";cout << em_one.i << "\n";cout << em_two.i << "\n";cout << em_one.j << "\n";cout << em_two.j << "\n";system("pause"); /*程序的停止按键提示*/return 0;}一、----- 结构和类之间的关联结构是C子集的一部分,是从C语言中继承过来的。

在C++中结构的作用被扩展了,是它称为一个类的代替方法。

类和结构的唯一区别在于:默认时,结构的所有成员是公有的,儿类的所有成员是私有的,除此之外结构和类是等价的。

也就是说结构定义了一个类的类型。

/*******************************···结构体和类的相互关系···*******************************///Using a constructor and destructor./*******************************声明C++ 程序头文件*******************************/#include <iostream>#include <string.h>#include <conio.h>#include <iostream>/*******************************·名字空间:组织大型的程序结构·*******************************/using namespace std;/*******************************·····全局变量声明·····/******************************/#define SIZE 1024/*******************************················*******************************/struct mystr{void buildstr(char *s); //publicvoid showstr();private: //now go privatechar str[255];};/*******************************/void mystr::buildstr(char *s){if(!*s) *str = '\0'; //initalize stringelse strcat(str,s);strcat(str,"Yigao Wu\n");}/*******************************/void mystr::showstr(){cout << str << "\n";}/*******************************················/******************************/int main(){mystr s;s.buildstr(""); /*init*/s.buildstr("Hello ");s.buildstr("there!");s.showstr();system("pause"); /*程序的停止按键提示*/ return 0;}/*******************************···类myter可做如下修改···/******************************//*******************************class mystr{char str[255];pubilc:void buildstr(char *s); //publicvoid showstr();}******************************/>>>有时候我们使用缩写POD来描述C风格的结构体――-不包含成员函数、构造函数和析构函数。

相关主题