类的成员函数

C++类或结构作为map的key值

心已入冬 提交于 2019-12-12 20:19:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.只有重载<的类或者结构才能作为map的key值。 string可以作为key值是因为string重载了< 2.如果不重载<会提示如下错误: error C2676: 二进制“<”: “const C”不定义该运算符或到预定义运算符可接收的类型的转换 3.重载<但是没有实现会提示如下错误: Expression: invalid operator< 比如bool operator < (const C &c) const{return true;} #include < string > #include <map> using namespace std; // 重载<的类或结构才能作为map的key值 class C { public : int i; string str; bool operator < ( const C &c) const { return i < c.i; } }; void main() { map<C, int > mapC; C c0; c0.i = 0 ; c0.str = " str1 " ; mapC.insert(pair<C, int >(c0, 0 )); C c1; c1.i = 1 ; c1.str = " str2 " ; mapC.insert(pair

关于C++中的类

风流意气都作罢 提交于 2019-12-09 12:26:02
(1)对于const成员函数,从const关键字必须同时出现在声明和定义处,若只出现在一处,就会出现编译时错误。 (2)struct关键字和class关键字的区别就是在于默认访问标号不同。如果类是struct关键字定义的,则在第一个访问标号之前的成员是公有的;如果类是class关键字定义的,则这些成员是私有的。 (3)类的定义以分号结束。分号是必需的,因为在类定义之后可以接一个对象定义列表。 (4)成员函数具有一个附加的隐含参数,即指向该类对象的一个指针,这个隐含指针命名为this,与调用成员函数的对象绑定在一起。 (5)在普通的非const成员函数中,this的类型是一个指向类类型的const指针,可以改变this所指向的值,但是不能改变this保存的地址;在const成员函数中,this 类型是一个指向const类类型的对象的const指针,即不能改变this指向的值,也不能改变this指针保存的地址。 不能从const成员函数中返回指向类对象的普通引用,const成员函数只能返回*this作为一个const引用。 基于成员函数是否为const,可以重载一个成员函数。 (6)可变数据成员:mutable。永远不能为const,甚至当它是const对象的成员时也是如此。const成员函数可以改变mutable成员。 (7)const构造函数是不必要的

实验七--类和对象(2)

泪湿孤枕 提交于 2019-12-06 09:55:11
1. 【问题描述】 自定义一个日期时间类DateTimeType,它含有类DateType与类TimeType的类对象作为其数据成员,并具有所列的其他几个成员函数。而后编制主函数,说明DateTimeType的类对象,并对其成员函数以及二对象成员所属类的公有成员函数进行使用。 class DateTimeType { //自定义的日期时间类 DateTimeType DateType date; //类 DateType 的类对象 date 作为其数据成员 TimeType time; //类 TimeType 的类对象 time 作为其另一个数据成员 public: DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0); //构造函数,设定 DateTimeType 类对象的日期时间,并为各参数设置了默认值 DateType& GetDate(){ return date; } //返回本类的私有数据对象 data TimeType& GetTime(){ return time; } //返回本类的私有数据对象 time void IncrementSecond(int s); //增加若干秒,注意“进位”问题 void PrintDateTime(); /

类和对象(下)C++

拟墨画扇 提交于 2019-12-05 03:22:32
1. 再谈构造函数 构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造 函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内 可以多次赋值。 class Date { public: //这样的构造函数中是赋初始值,不是初始化 //Date(int year,int month,int day) //{ // _year = year; // _month = month; // _day = day; //} Date(int year, int month, int day) :_year(year) //初始化列表 用:后面个参数赋值用,隔开,最后一个参数后不加分隔符 , _month(month) , _day(day) {} private: int _year; int _month; int _day; }; int main() { Date d1(2016, 6, 6); return 0; } 注意: 1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) 。 2. 类中包含以下成员,必须放在初始化列表位置进行初始化: 引用成员变量 const成员变量 类类型成员(该类没有默认构造函数 3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量

C++基础(对象和类)

為{幸葍}努か 提交于 2019-12-05 02:05:22
类的数据成员是不能在声明类时初始化的 。类的数据成员只是这个类的对象的一些属性声明。每个对象的属性值都是不相同的。 类只是一个数据模板。声明类时并没有申请存储空间,只有类定义一个对象时,才申请空间。 成员函数是用来对数据成员进行操作的,又称为方法。 所创建的每个新对象都有自己的存储空间,用于存储其内部变量和类成员 。但同一个类的所有对象共享同一组类方法,即每种方法只有一个副本。 Sum make,jock; // 创建两个对象 两个对象将占据两块不同的内存块,但 make.show() 和 jock.show() 都调用同一个方法,它们将执行同一个代码块,只是将这些代码用于不同的数据。 要创建类对象,可以声明类变量,也可以使用 new 为类对象分配存储空间。 可以将对象作为函数的参数和返回值,也可以将一个对象赋给另一个对象。 通常,数据成员被放在私有部分中,成员函数被放在共有部分中。 公有部分的内容构成了设计的抽象部分 —— 公有接口。将数据封装到私有部分中可以保护数据的完整性,这就被称为数据隐藏。 对象 ( 实例 ) 调用成员函数时,每当成员函数中的代码引用某个数据成员时,该函数都将使用对象中相应成员的值。 来源: https://www.cnblogs.com/tingtaishou/p/11896830.html

C++类的定义和对象

时光总嘲笑我的痴心妄想 提交于 2019-12-05 01:51:46
C++类的定义和对象 类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。 类的定义 class Student{ public: //成员变量 char *name; int age; float score; void say(){ cout<<name<<age<<score<<endl; } }; 类只是一个模板(Template),编译后不占用内存空间. class C++ 中新增的关键字,用来定义类。 成员变量和成员函数,它们统称为类的成员(Member) 创建对象: Student Lilei; //创建对象 Student 是类名, liLei 是对象名。和使用基本类型定义变量的形式类似, 从这个角度考虑,我们可以把 Student 看做一种新的数据类型,把 liLei 看做一个变量。 在创建对象时,class 关键字可要可不要 class Student LiLei; //正确 Student LiLei; //同样正确 还可以创建对象数组: Student allStu[100]; 使用对象指针: Student stu; //pStu 是一个指针,它指向 Student 类型的数据,通过 Student 创建出来的对象 Student

类和对象(中)C++

本小妞迷上赌 提交于 2019-12-05 01:14:02
类中哪些默认的事儿…… 1. 类的6个默认成员函数: 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6个默认成员函数。 class Date{}; 2. 构造函数: 构造函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员 都有 一个合适的初始值,并且在对象的生命周期内只调用一次。 构造函数的给出方式如下,参数可以给出缺省值,也可以重载构造函数。 class Date { public: Date(int year = 2000,int month=1,int day=1) { _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }; int main() { Date d1; return 0; } 构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主 要任务并不是开空间创建对象,而是初始化对象。 其特征如下: 1、 函数名与类名相同。 2、无返回值。 3、对象实例化时编译器自动调用对应的构造函数。 4、构造函数可以重载。 5、如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定

类与对象(上) C++

感情迁移 提交于 2019-12-04 14:48:36
深夜发博,最深的感触就是,曾经欠的债,是要用头发来还的…… 关于C++大致分为以下几个小部分: 1.类与对象的初步认知: C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 2.类的引入: C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。结构体的定义,在C++中更喜欢用class来代替 ,然后将这种把函数与变量等绑定在一个结构体中,这个结构体称为类。 struct Student1 { void SetStudentInfo(const char* name, const char* gender, int age) { strcpy(_name, name); strcpy(_gender, gender); _age = age; } void PrintStudent() { cout << _name << " " << _gender << " " << _age << endl; } char _name[20]; char _gender[10]; int _age; }; class Student2 { public: void SetStudentInfo(const char* name, const

PHP类

不问归期 提交于 2019-12-04 05:59:13
类概念: 类参考: https://www.runoob.com/php/php-oop.html 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。 对象 − 是类的实例。 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。 成员函数 − 定义在类的内部,可用于访问对象的数据。 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。 子类 − 一个类继承其他类称为子类,也可称为派生类。 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的

C++面向对象 类和类的对象

我的未来我决定 提交于 2019-12-04 03:52:02
期末了,总结一下教材上面的知识点 第九章 9.1 类的声明 1.在声明类的成员同时要声明该成员的访问属性。 2.C++结构体与类的唯一区别:struct成员的访问属性默认为public,class成员的访问属性默认为private。 3.一般将必须对外的部分设计成公开的,不必对外的成员设计成受保护的或者是私有的。 4.类的成员函数对于同一个类的所有数据成员具有无限制的访问能力。 9.2 对象的基本空间 5.创建对象意味着给对象分配内存空间。 6.我们将对象的非静态数据成员所占用的空间总和称为对象的基本空间。 9.3 对象的自我表现 7.this的指向被锁定不能更改。 8.常量成员函数是类的成员函数,这种函数的隐含形式参数指向本对象的常量指针常量(const * const this),故在函数体内只能读取但是不能修改本对象的任何属性 9.常量对象只能调用常量成员函数。 10.将类当中所有不修改对象属性的成员函数都设计成常量成员函数是有好处的。 9.5 类模板与模板类 11.函数模板是-在源代码级,数据类型待定而操作确定的函数描述 看一个二维向量模板的例子: template <typename TYPE>class Vec2 //类模板的声明 其中TYPE是待定数据类型,或者称为 形式数据类型 12.模板成员函数在类声明体外描述时候的书写格式: template <typename