类的成员函数

初级C++2类与对象

蓝咒 提交于 2019-12-01 12:12:21
对象 object |--属性 attribute |--行为 behaviour 调用对象中的函数就是向该对象传送一个消息 message 封装性 encapsulation |--一是将有关数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰 |--二是将对象中某些部分对外隐藏,即隐藏其内部细节,只留下少量接口,以便与外界联系,接受外界的消息,即信息隐藏 information hiding 抽象 abstraction 抽象的作用是表示同一类事物的本质。 类 继承与重用 软件重用 software reusability 多态性 polymorphism 面向过程:程序 = 数据结构 + 算法 面向对象:程序 = 对象s + 消息 ————————————————————————————————————— 类class 类是对象的抽象,对象是类的具体实例(instance) 类头 class head 类体 class body 成员列表 class member list 类中成员默认是private struct成员默认是public class 类名 { private: 私有数据和成员函数 public: 公用数据和成员函数 }; 成员访问限定符 member access specifier |--私有的 private

类与对象

笑着哭i 提交于 2019-12-01 09:38:27
类与对象总结 类 类的定义:⑴类是对具有相同属性和行为的一组对象的抽象与统一描述。是用户自定义的数据类型。 ⑵类的定义包括行为和属性两个部分。 ⑶属性以数据表示,行为通过函数实现。 格式:class 类名 { public:公有数据成员和成员函数; private: 私有数据成员和成员函数; protected:保护数据成员和成员函数; } ; //类的定于必须以分号结束! 使用类时的注意事项: ⑴类的成员可以是其他类的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员。 ⑵类定义必须以分号“;”结束。 ⑶类与结构体的区别:没有明确指定类成员的访问权限时,C++结构体的成员是公有的,而类的成员是私有的。 ⑷c++类定义的格式:(数据成员私有化,成员函数公有化) 成员函数: 类的成员函数是实现类的行为属性的成员。 一般将成员函数声明为函数原型,在类外具体实现成员函数。 成员函数的定语: 返回值类型 类名 ::成员函数名(参数表) // :: 作用域区分符,用于标识属于什么类的成员。 { 函数体 } 对象: 对象是类的实例或实体。 类与对象的关系,如同C++基本数据类型和该类型的变量之间的关系。 对象的定义格式如下: 类名 对象名1,对象名2,…,对象名n; 定义对象应注意: 必须在定义了类之后,才可以定义类的对象。 来源: https://www

类的继承与派生

☆樱花仙子☆ 提交于 2019-12-01 05:28:57
继承与派生 在教材中给出的对类的继承和派生的解释: “类的继承,是新的类从已有类那里得到已有的特性。” “从已有的类产生新类的过程就是类的派生。” 新的类是基类的派生类,新的类从基类处得到已有的特性。 一、继承与派生举例 新的类是基类的派生类,新的类从基类处得到已有的特性。 例1、写一个类student,再写一个Student类的派生类Undergraduate。 代码: #define _CRT_SECURE_NOWARNINGS #include<iostream> #include<string> using namespace std; class Student { public: Student() { name = "abcd"; old = 0; } Student(string String1,int years) { name = String1; old = years; } void SetNO(string String1, int years) { name = String1; old = years; } string Getname() { return name; } int Getold() { return old; } private: string name; int old; }; class Undergrauate : public

类的静态成员

霸气de小男生 提交于 2019-11-30 16:48:34
类的静态成员 面向对象的设计方法兼容数据的保护和共享,静态成员的提出是为了解决不同对象之间数据共享问题的。例如要统计人员个数,出现次数等等都需要用到静态处理。静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括静态数据成员和静态成员函数)。 首先我们要搞懂 静态变量生存的周期 静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。基于这个类的所有对象只有一个静态成员变量的拷贝,所以一个函数结束时,静态变量仍然在内存中的静态存储区里保存,直到脚本结束才会被注销。 1.静态数据成员 如果我们需要面向对象中“类属性”,这个属性为整个类拥有,不属于其中某一个对象,从而体现了整个类的数据共享。此时我们就用用static声明静态成员。 由于静态数据成员不属于任何一个对象,我么可以用类名对他进行访问,一般用法是 类名::标识符 ,但是在类中也要进行定义性声明。 类的静态数据成员需要类之外定义是因为要单独给他们分配空间。 例如书上5-4中具有静态成员的point类 #include<iostream> using namespace std; class point { public: point(int x=0,int y=0):x(x),y(y){ count++; } point(point &p); ~point()

<<C++ Primer>> 第 7 章 类

邮差的信 提交于 2019-11-29 19:27:14
术语表 第 7 章 类 抽象数据类型(abstract data type): 封装(隐藏)了实现细节的数据结构。 访问说明符(access specifier): 包括关键字 public 和 private。用于定义成员对类的用户可见还是只对类的友元和成员可见。在类中说明符可以i出现多次,每个说明符的有效范围从它自身开始,到下一个说明符为止。 聚合类(aggregate class): 只含有公有成员的类,并且没有类内初始值或者构造函数。聚合类的成员可以用花括号括起来的初始值列表进行初始化。 类(class): C++提供的自定义数据类型的机制。类可以包含数据,函数和类型成员。一个类定义一种新的类型和一个新的作用域。 类的声明(class declaration): 首先是关键字 class(或者 struct),随后是类名以及分号。如果类已经声明而尚未定义,则它是一个不完全类型。 类的作用域(class scope): 每个类定义一个作用域。类作用域比其他作用域更加复杂,类中定义的成员函数甚至有可能使用定义语句之后的名字。 常量成员函数(const member function): 一个成员函数,在其中不能修改对象的普通(即既不是 static 也不是 mutable)数据成员。const成员的this指针是指向常量的指针,通过区分函数是否是 const 可以进行重载。

C++中类的定义和类的构造函数

落花浮王杯 提交于 2019-11-29 16:25:16
类的定义 class 类名{ 访问范围说明符: 成员变量1 成员变量2 成员函数声明1 成员函数声明2 访问范围说明符: 更多成员变量 更多成员函数声明 ... }; 类的定义要以 ; 结束。 “访问范围说明符”一共有三种,分别是 public、private 和 protected。三者的区别后面会详细介绍,目前暂且都用 public。“访问范围说明符”可以出现任意多次。 “成员变量”的写法与普通的变量定义相同。称其为成员变量,是因为这些变量是一个类的成员。 同样地,“成员函数声明”的写法也与普通的函数声明相同。 一个类的成员函数之间可以互相调用。类的成员函数可以重载,也可以设定参数的默认值。 以前所学的函数不是任何类的成员函数,可称为“全局函数”。 成员变量就代表对象的“属性”,成员函数就代表对象的“方法”。成员变量和成员函数出现的先后次序没有规定。 成员函数的实现可以位于类的定义之外,格式如下: 返回值类型 类名:函数名() { 函数体 } 定义类之后,就可以定义对象了。定义对象的基本方法如下: 类名 对象名; 此处,“对象名”的命名规则和普通变量相同。对象也可以看作“类变量”。 public: int w, h; //成员变量,宽和高 void init( int w_,int h_ ); //成员函数,设置宽和高 int area(); //成员函数, 求面积 int

简单的一个类的存储空间

限于喜欢 提交于 2019-11-29 00:15:53
/* 对于此类的模型为: class object { float _x;//类的nonstatic成员函数 _vptr_Point;//指向虚函数表的指针 } virtual table//虚函数表的信息(应该存放的是一些指针) slot1---type info for Point(用于支持RTTI) slot2---~Point() slot3---print() 类之外 //成员函数 Point::Point(float) float x() const //static函数 static int PointCount() //static数据成员 static int _point_count */ #include <iostream> class Point { public: Point(float xval); virtual ~Point(); float x() const; static int PointCount(); protected: virtual std::ostream& print(std::ostream& os) const; float _x; static int _point_count; }; 来源: http://www.cnblogs.com/zzyoucan/p/4007938.html

MFC基础类及其层次结构

回眸只為那壹抹淺笑 提交于 2019-11-28 20:31:34
从类 CCmdTarget派生出绝大多数MFC中的类,其层次结构如下图: 从根类 Cobject层层派生出绝大多数MFC中的类,层次结构如下图: MFC中重点类: CObject类是MFC的绝大部分类的基类。该类完成动态空间的分配与回收,支持一般的对象诊断、运行时类型标识,出错信息处理和文档序列化等。 (1) 对象诊断 :利用成员函数 AssertValid进行对象有效性检查;利用成员函数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。(只能用于Debug版的应用程序) (2) 运行时类型识别 : GetRuntimeClass根据对象的类返回一个相关联的指向CRuntimeClass结构的指针,它包含了一个类的运行信息;函数IsKindOf用于测试对象与给定类的关系。 (3) 通过与 Carchive相结合 , CObject类为其派生类提供了序列化功能。要创建一个支持序列化的派生类,必须将DECLARE_SERIAL宏添加到类定义中,将IMPLEMENT_SERIAL添加到类的实现文件中。       CCmdTarget:由CObject类直接派生,所有能实行消息映射MFC类的基类。将系统事件和窗口事件发送给响应这些事件的对象,完成消息发送、等待和派遣(调度)等工作,实现应用程序的对象之间协调运行,功能如下:   ( 1)

类:友元函数

三世轮回 提交于 2019-11-28 16:21:52
一、友元函数 1、友元函数 友元函数 不是当前类的成员函数 ,但它可以访问该类所有的成员,包括私有成员、保护成员和公有成员。 在类中声明友元函数时,需在其函数名前加上关键字 friend。 友元函数既 可以是非成员函数 , 也可以是另一个类的成员函数 。 class Date { public: Date(int y, int m, int d); //构造函数 friend void showDate1(Date &d); //友元函数 private: int year; int month; int day; friend void showDate2(Date &d); //友元函数 }; Date::Date(int y, int m, int d) { year = y; month = m; day = d; } void showDate1(Date &d) { cout << d.year << "." << d.month << "." << d.day << endl; } void showDate2(Date &d) { cout << d.year << "." << d.month << "." << d.day << endl; } int main() { Date date1(2009, 11, 14); showDate1(date1);

函数指针与类成员函数指针

删除回忆录丶 提交于 2019-11-28 15:00:35
1,函数指针 函数指针,顾名思义就是函数的指针,而指针其实就是地址,那么函数指针就是存储函数的地址,可是实际大部分时间里,我们写程序时是根本不会去考虑函数地址在哪里。我们只需要知道函数原型和函数声明就可以。但是想象一下,我们总是以为函数就应该接收参数,那么函数本身是否可以作为函数的参数呢?我做了下面的一个实验 #include<iostream> #include<stdio.h> #include<cstring> using namespace std; typedef int (*intFun)(int,int); int add(int a,int b); int minus(int a,int b); int multi(int a,int b); int fun_choose(intFun,int,int); int main() { intFun pf; pf=add; printf("%p\n",pf); printf("%p\n",add); cout<<add(5,4)<<endl; cout<<pf(5,4)<<endl; cout<<fun_choose(add,5,4)<<endl;//函数名作为参数 return 0; } int fun_choose(intFun fun,int a,int b) { return(*fun)(a,b); } int