精华内容
下载资源
问答
  • 类的定义一般分为说明部分和实现部分。说明部分是用来说明该类中的成员,包括数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用...

    70e3f73f1be818fdb01c855304dd3646.png

    类的定义一般分为说明部分和实现部分。说明部分是用来说明该类中的成员,包括数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。可见,使用者关心的往往是说明部分。

    类的定义格式为:

    class类名

    {public:

    成员函数或数据成员的说明

    private:

    成员函数或数据成员的说明

    };

    各个成员函数的实现

    其中,class是定义类的关键字。类名是一标识符,通常用“T”字母开始的字符串作为类名,T用来表示类,以示与对象、函数名区别。花括号内是类的说明部分(包括前面的类头),说明该类的成员。

    从访问权限上来分,类的成员可分为公有的(public)、私有的(private)和保护的(protected)三类。这里,先讨论前两类,保护的成员在继承性一小节中讨论。公有的成员用public来说明,公有部分往往是一些操作(即成员函数),它提供给用户的接口功能,这部分成员可以在程序中引用。私有的成员用private来说明,私有部分通常是一些数据成员,这些成员是用来描述该类中的对象的属性的,用户是无法访问它们的,只有成员函数或经特殊说明的函数才可以引用它们,它们是被用来隐藏的部分。

    关键字public、private和protected被称为访问权限修饰符或访问控制修饰符。它们在类体内出现的先后顺序无关,并且允许多次出现,用它们来说明类成员的访问权限。

    各个成员函数的实现是类定义中的实现部分,这部分包含所有在类体内说明的函数的定义。如果一个成员函数在类体内定义了,实现部分将不出现。如果所有的成员函数都在类体内定义,则实现部分可以省略。

    2829f2ca24f0d0090cbba57f30759f23.png

    辅导:C语言类的定义.doc

    下载Word文档到电脑,方便收藏和打印[全文共721字]

    编辑推荐:

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    下载Word文档

    展开全文
  • Objective-C语言和C++中类的定义和方法

    Objective-C语言和C++中类的定义、对象和方法有一些区别,看起来更加直观明了。

    fraction.h头文件

    #import <Foundation/Foundation.h>
    
    @interface Fraction : NSObject
    {
    	int numerator;
    	int denominator;
    }
    -(void) print;
    -(void) setNumerator: (int) n;
    -(void) setDenominator: (int) d;
    -(int)  numerator;
    -(int) denominator;
    -(double) convertToNum;
    @end; 

    fraction.m源文件

    #import"fraction.h"
    
    @implementation Fraction
    
    -(void) print
    {
    	NSLog(@"%i/%i",numerator,denominator);
    }
    
    -(void) setNumerator: (int) n
    {
    	numerator=n;
    }
    
    -(void) setDenominator: (int) d
    {
    	denominator=d;
    }
    -(int)  numerator
    {
    	return numerator;
    }
    -(int) denominator
    {
    	return denominator;
    }
    
    -(double) convertToNum
    {
    	if (denominator!=0)
    	{
    		return (double) numerator/denominator;
    	}
    	else
    	{
    		return 1.0;
    	}
    }
    
    @end
    main_fraction.m源文件

    #import "fraction.h"
    
    int main(int argc,const char *agrv[])
    {
    	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //自动分配内存保留空间
    
    	Fraction *my_fraction = [[Fraction alloc] init]; //实例化对象并分配内存空间, 与C++类实例化对象的不同
    
    	[my_fraction setNumerator:1];          //C++则是my_fraction.setNumberator(1);
    	[my_fraction setDenominator:3];
    
    	NSLog(@"The value of my_fraction is:");
    	[my_fraction print];
    
    	[my_fraction release];           //释放实例化对象使用的内存    
    
    	[pool drain];                   //释放已分配的内存
    	return 0;
    }



    展开全文
  • C语言的定义

    2016-06-15 11:24:18
    c语言定义问题 宏定义不是可以实现和函数相同功能 那为什么还要分函数和宏定义两种功能?  分享| 2015-11-26 11:30妖紳 | 浏览 93 次 来自:手机知道  C语言函数 c语言定义问题 宏定义不是可以...

    c语言宏定义问题 宏定义不是可以实现和函数相同功能 那为什么还要分函数和宏定义两种功能?

    2015-11-26 11:30妖紳 | 浏览 93 次  来自:手机知道
    c语言宏定义问题
    宏定义不是可以实现和函数相同功能
    那为什么还要分函数和宏定义两种功能?
    我们以下面两行代码为例,展开描述:
    函数式宏定义:#define MAX(a,b) ((a)>(b)?(a):(b))
    普通函数 :MAX(a,b) { return a>b?a:b;}
    (1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。
    (2)调用真正函数的代码和调用函数宏定义的代码编译生成的指令不同。
    如果MAX是个普通函数,那么它的函数体return a > b ? a : b; 要编译生成指令,代码中出现的每次调用也要编译生成传参指令和call指令。而如果MAX是个函数式宏定义,这个宏定义本身倒不必编译生成指令,但是代码中出现的每次调用编译生成的指令都相当于一个函数体,而不是简单的几条传参指令和call指令。所以,使用函数式宏定义编译生成的目标文件会比较大。
    (3)函数式宏定义要注意格式,尤其是括号。
    如果上面的函数式宏定义写成 #define MAX(a, b) (a>b?a:b),省去内层括号,则宏展开就成了k = (i&0x0f>j&0x0f?i&0x0f:j&0x0f),运算的优先级就错了。同样道理,这个宏定义的外层括号也是不能省的。若函数中是宏替换为 ++MAX(a,b),则宏展开就成了 ++(a)>(b)?(a):(b),运算优先级也是错了。
    (4)若函数参数为表达式,则普通函数的调用与函数式宏定义的替换过程是不一样的。
    普通函数调用时先求实参表达式的值再传给形参,如果实参表达式有Side Effect,那么这些SideEffect只发生一次。例如MAX(++a, ++b),如果MAX是普通函数,a和b只增加一次。但如果MAX函数式宏定义,则要展开成k = ((++a)>(++b)?(++a):(++b)),a和b就不一定是增加一次还是两次了。所以若参数是表达式,替换函数式宏定义时一定要仔细看好。
    5)函数式宏定义往往会导致较低的代码执行效率。
    看下面一段代码:
    
    复制代码代码如下:
    
    int a[]={9,3,5,2,1,0,8,7,6,4};
    int max(n)
    {
        return n==0?a[0]:MAX(a[n],max(n-1));
    }
    
    int main()
    {
        max(9);
        return 0;
    }
    
    若是普通函数,则通过递归,可取的最大值,时间复杂度为O(n)。但若是函数式宏定义,则宏展开为( a[n]>max(n-1)?a[n]:max(n-1) ),其中max(n-1)被调用了两遍,这样依此递归下去,时间复杂度会很高。
    
    尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现。
    展开全文
  • 什么是类?什么是对象?对于面向对象的C++语言学习,类和对象的理解是整个语言学习中核心的基础。...所以,概括的讲:类是对象的抽象和概括,而对象是类的具体和实例。请大家理解这句话。那么C++中...

    什么是类?什么是对象?

    对于面向对象的C++语言学习,类和对象的理解是整个语言学习中核心的基础。通俗的理解,类其实就是一个模子,是一个变量类型,对象就是这个类型定义出来的具体的变量,就像int a;这句话,int对应类,a就对应对象。大家应该就好理解了,但需要注意的是int是C++的内置类型,并不是真正的类。

    所以,概括的讲:类是对象的抽象和概括,而对象是类的具体和实例。请大家理解这句话。

    那么C++中的类长什么样呢?简单说, C++中类的其实就是包含函数的结构体!因为C++类里面的成员除了可以像C语言的结构体那样包含基本变量以外,还可以包含函数,前者叫做成员变量,后者叫做成员方法。

    关键字呢用class类定义,比如下面定义一个C++的类,学生类:class Student

    {

    public:

    int num;

    char name[100];

    int score;

    int print()

    {

    cout<

    return 0;

    }

    };

    大家可以看到,形式上和C语言的结构体非常像,成员有变量也有函数,今后我们要习惯称之为属性和方法了。值得一提的是大家注意观察还有类里还有一个public的东西,它是控制成员访问权限的一个存取控制属性,除了public以外,还有private、protected一共三种,其中private表示私有,被它声明的成员,仅仅能被该类里的成员访问,外界不能访问,是最封闭的一种权限;protected比private稍微公开一些,除了类内自己的成员可以访问外,它的子类也可以访问(关于子类的概念我们会在后面详细展开),而public声明的成员,则可以被该类的任何对象访问,是完全公开的数据。这里大家简单理解,之后伴随代码一边实验一边体会。

    值得提醒一下的是,类定义后面还有一个分号,大家注意,不要丢掉!

    好了,在认识了类的基本样子以后,下面我们再给大家看另一种写法,我们刚才看的这种写法,成员函数是写在类里的,如果类里的成员函数很多的话,阅读起来就会乱很多,故此,C++还支持另外一种写法,就是成员函数仅在类内声明函数原型,在类外定义函数体,这样在类里可以看到所有成员函数的列表,像目录一样一目了然,规范很多。

    在类中声明函数原型的方法与一般C语言的函数原型声明一样,而在类外定义函数的方法,则需要类名加::作用域限定符表示,

    我们还以刚才的Student类为例,类外定义的代码如下:class Student

    {

    public:

    int num;//学号

    char name[100];//名字

    int score;//成绩

    int print();//类内声明print函数

    };

    int Student::print()//在类外定义完整的print函数

    {

    cout<

    return 0;

    }

    大家注意print函数在类里声明后,我们在后面又完整的定义了出来,函数头部分在返回值和函数名之间用类名加::的方式指明这个函数是属于哪个类的。

    请大家熟悉以上两种用法,然后自行上机理解,根据情况选择。

    展开全文
  • c语言结构体的定义和使用

    千次阅读 多人点赞 2020-12-09 14:55:12
    结构体(struct)指是一种数据结构,是C语言中聚合数据类型(aggregate datatype)。结构体可以被声明为变量、指针或数组等,用以实现较复杂数据结构。结构体同时也是一些元素集合,这些元素称为结构体...
  • C语言的函数定义和函数声明

    万次阅读 多人点赞 2017-11-10 10:04:18
    C语言不同于Java语言,在Java语言中,在一个中,定义函数/方法后,在调用时不需要声明。在C语言定义函数后,在使用前,需要在main函数前进行声明,否则会报错。 #include //使用函数前,需要在main函数前对...
  • C语言程序设计教案 章节名称 函数概述定义函数方法函数一般调用 授课类型 理论 实验 ?理实一体 实训 实习 班级 地点 周次 星期 节次 授课进度 ?符合 超前 滞后 ?符合 超前 滞后 ?符合 超前 滞后 教学目标 知识...
  • C语言中const定义常量和宏常量区别1.const定义常量2.宏常量3.两者区别(1) 编译器处理方式不同(2) 类型和安全检查不同(3) 存储方式不同 1.const定义常量 关键字const 定义的是变量不是常量, 而是去改变一个变量...
  • 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一。结构体可以被声明为变量...C语言结构体类型的定义模板大概为: struct 类型名{ 成员表列 } 变量;
  • C语言中变量定义与声明的区别(转载) (2012-04-16 21:13) ...在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的
  • C调用C++文件中定义的函数(不可以是类的成员函数),如果不加注意,会有undefined function类似的错误,下面举例说明如何调用。 C++ file: extern "C" void A(void); C++ H file AA.h // 文件名为AA.h #...
  • C语言结构体定义的几种方法

    万次阅读 多人点赞 2018-03-08 17:35:18
    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一。结构体可以被声明为变量、指针...结构体的定义C语言结构体类型的定义模板大概为:struct 类型名{
  • defined(c语言的定义) 2012-02-20 13:44:57 分类: 嵌入式 因为对于一个大程序而言,我们可能要定义很多常量( 不管是放在源文件还是头文件 ),那么我们有时考虑定义某个常量时,我们就必须返回检查原来此...
  • 蝴蝶不菲在C语言中,结构体(struct)指是一种数据结构,是C语言中聚合数据类型(aggregate data type)。结构体可以被声明为变量、指针或数组等,用以实现较复杂数据结构。结构体同时也是一些元素集合,...
  • 函数是C语言的功能单位,实现一个功能可以封装一个函数来实现。定义函数时候一切以功能为目的,根据功能去定函数参数和返回值。 函数分类 1、从定义角度分类(即函数是谁实现) ​ 1.库函数(c语言实现) ...
  • C语言结构体中定义函数指针详解

    万次阅读 多人点赞 2015-12-30 17:24:09
    在学习嵌入式我们经常和结构体函数指针打交道,还有链表,环形缓冲区之类的,这里中点讲解结构体中定义函数指针。下面这个程序你看一遍你基本也明白用法了。 下面是我写的一个很简单的程序struct.c #include /* 标准...
  • 一般函数指针可以这么定义: 表示一个指向含有两个int参数并且返回值是int形式任何一个函数指针. 假如存在这样一个函数: int add2(int x,int y) { return x+y; } 那么在实际使用指针func时可以这样实现: ...
  • 关于C语言static定义函数类型具体解释 分类? C语言知识2011-08-17 11:34?231人阅读? 评论(0? \o "收藏" 收藏? \o "举报" 举报 ? ? 内部函数和外部函数? 函数一旦定义后就可被其它函数调用 ? 但当一个源程序由多个...
  • C语言定义技巧

    2013-06-23 00:27:09
    C语言定义技巧 (2006-09-26 16:26) ...写好C语言,漂亮定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些***软件中常用得宏定义......   1,防止一个头文件被重复包含
  • c语言多行宏定义及其注释

    千次阅读 2014-03-18 20:40:34
    多行宏定义中的注释问题  ...宏定义高深莫测,而且是比较细节的东西,详细说明请参见"C参考手册"之类的书籍。 在我的代码中,我大致要做这样一个简单的事情:printf("%s%s%s\n", "hello", "macro", "yea
  • 可以说C程序所有工作都是由... 从函数定义的角度来看,函数可以分为库函数和用户定义函数.(1)库函数由C系统提供,用户无需在程序中定义或键入描述,只需在直接在程序中调用程序之前包含函数原型头文件即可. 上...
  • C语言定义

    2019-04-08 10:14:44
    <font size=3>1、"##"运算符可以使用函数宏替换部分。另外,##还可以用于对象宏替换部分。这个运算符把两个语言符号组合成单个语言符号。例如:   <font size=3>`#define XNAME(n) x##n`这样宏...
  • C语言中,结构体(struct)指是一种数据结构,是C语言中聚合数据类型(aggregate data type)。结构体可以被声明为变量、指针或数组等,用以实现较复杂数据结构。结构体同时也是一些元素集合,这些元素...
  • 的定义 C语言

    2021-02-28 16:48:25
    有且只有一个被称为根节点 由若干个互不相交子树,子树本身就是一颗树 专业术语: 节点 父节点 子节点 子孙 堂兄弟 深度: 从根节点到最底层节点层数被称之为深度 叶子节点: 没有子节点节点...
  • 对于普通的函数来说,得在头文件里面声明(记得要用ifndef),在c文件里面定义,但是对于类的成员函数来说,可以直接在class里面声明同时定义 就把类看作一个加强版的结构体,结构体是可以这样的 A.c —include— ...
  • C语言声明和定义

    2016-09-29 22:32:28
    C语言中,声明指是描述一个对象类型,指代该程序其他地方有这样一个对象,而声明主要分为三:函数声明,变量声明,以及类型声明。而与声明相对,定义则是确定一个对象类型,并同时为这个对象分配相应...
  • C语言一维数组的定义

    千次阅读 2016-11-03 22:21:41
    一维数组的定义方式  在C语言中使用数组必须先进行定义。一维数组的定义方式为:  类型说明符 数组名 [常量表达式];  其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方...
  • c语言的存储

    2014-01-05 19:01:47
    c语言有五种不同类型存储,了解他们会十分有助于对c语言的理解程度。 描述c语言的存储有作用域,链接类型以及存储时期三种描述方法。 作用域是用来描述变量可以引用区域一个概念,一般情况下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,552
精华内容 3,020
关键字:

c语言类的定义

c语言 订阅