C语言的类和对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
3 / 12
【类内频繁使用访问限定符唯一优点是:通过把一个类各个部分可视的组织在一起, 可以使阅读程序者很好的阅读和理解,对于编译器没有什么区别。在类中声明的函数称之 为成员函数。成员函数可以访问类的所属的所有的任何成员(也称为实例变量),类的任 何元素都可被当做该类的成员。】 对于成员也有一些限制,非静态成员变量没有初值,成员不能成为当前正被声明声明 的类的对象(虽然一个成员可以是指向当前正被声明的类的指针)。成员不能声明为 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 cout cout cout cout << << << << << "调试函数\n"; em_one.i << "\n"; em_two.i << "\n"; em_one.j << "\n"; em_two.j << "\n"; /*程序的停止按键提示*/
2 / 12
/******************************* ················ /******************************/ class employee { char name[SIZE]; public: void putname(char *n); void getname(char *n); private: double wage; public: void putwage(double w); double 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";
//private by deaulte
//now,private again //back to public
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; /*程序的停止按键提示*/
5 / 12
{
mystr s; s.buildstr(""); s.buildstr("Hello "); s.buildstr("there!"); s.showstr(); system("pause"); return 0; /*init*/
/*程序的停止按键提示*/
}
/******************************* ···类 myter 可做如下修改··· /******************************/ /******************************* class mystr{ char str[255]; pubilc: void buildstr(char *s); //public void showstr(); } ******************************/ >>>有时候我们使用缩写 POD 来描述C风格的结构体――-不包含成员函数、构 造函数和析构函数。POD表示 Plain Old Data(及普通老数据)。 【结构和类的总结】 1、 增强了结构能力; 2、 增强了其移植性; 3、 类 定义可自由演化,结构体必受限于 C 的语言的定义; 二、-----联合和类之间的关联 和结构体一样,联合(union)也可以用来定义类,在 C++中联合既包括成员函数, 也包含变量,还可以包含构造函数和析构函数。C++的连克包含了C联合的所有的特性, 其最重要的是数据元素共享内存的相同地址。与结构相似,默认时,联合成员都是公共的, 并且完善与C兼容。 <下面使用联合交换组成一个无符号的短整型的字节> /******************************* 声明 C++ 程序 头文件 *******************************/ #include <iostream> /******************************* ·名字空间:组织大型的程序结构· *******************************/ using namespace std; /******************************* ····联合体使用举例····· *******************************/ union swap_byte { void swap(); void set_byte(unsigned short i);
对于成员也有一些限制非静态成员变量没有初值成员不能成为当前正被声明声明的类的对象虽然一个成员可以是指向当前正被声明的类的指针
1 / 12
C 语言的类和对象
【类实现了 C++面向对象程序设计的基础,我们使用类来定义对象的属性,类是 C++封装的基本单元。】 一、-----类 使用关键字 class 创建类,一个类声明定义了一个连接代码和一个数据的新类型,这 个新的类型又可以用来声明该类的对象。因此,类又是逻辑逻辑抽象概念,儿对象是物理 存在的,也就是说对象是类的实例。 类的声明语法上和结构相似。 [一下是完整的类的形式] class class_name { private data and functions access_specifier: data and functions access_specifiter: data and functions //…….. access_specifier:是 data and functions }object_list; 其中,object_list 是任选项,如过存在,他声明类的对象。access_specifieБайду номын сангаас 为下面的 三个关键字之一: 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
system("pause"); return 0; } 一、-----结构和类之间的关联
4 / 12
结构是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); //public void showstr(); private: //now go private char str[255]; }; /*******************************/ void mystr::buildstr(char *s) { if(!*s) *str = '\0'; //initalize string else strcat(str,s); strcat(str,"Yigao Wu\n"); } /*******************************/ void mystr::showstr() { cout << str << "\n"; } /******************************* ················ /******************************/ int main()