精华内容
下载资源
问答
  • Java(作为成员变量类型)

    千次阅读 2019-06-06 11:26:22
    组合关系和继承关系相比,前者的主要优势是不会破坏封装,当 Hero 与 Weapon 之间为组合关系时, Weapon 封装实现,仅向 Hero 提供接口。而当 Hero 与 Weapon 之间为继承关系时, Weapon ...

    本例使用组合关系(松耦合)。在这里插入图片描述

    执行结果:

    年龄为20的盖伦用AK-47攻击敌方。
     
    Process finished with exit code 0
    

    组合关系和继承关系相比,前者的主要优势是不会破坏封装,当类 Hero 与 类 Weapon 之间为组合关系时,类 Weapon 封装实现,仅向类 Hero 提供接口。而当类 Hero 与 类 Weapon 之间为继承关系时,类 Weapon 会向类 Hero 暴露部分实现细节。

    在软件开发阶段,组合关系的编码量没能比继承关系少,但是到了软件维护阶段,由于组合关系使系统具有较好的松耦合性,系统维护会更容易。

    组合关系的缺点是比继承关系要创建更多的对象。

    转载: 原文(点我)

    展开全文
  • 枚举类型成员的方法

    千次阅读 2019-06-26 14:54:02
    用户可以将一个枚举类型看作是枚举类型的一个实例,它继承于java.lang.Enum,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰,...

    枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之外,还具有其他方面的优势。
    用户可以将一个枚举类型看作是枚举类型的一个实例,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。
    由于枚举类型对象继承于java.lang.Enum类,所以该类中一些操作枚举类型的方法都可以应用到枚举类型中。下面将列举了枚举类型中的常用方法。
    方法名称 具体含义 使用方法
    values() 该方法可以将枚举类型成员以数组的形式返回 枚举类型名称.values()
    valueOf() 该方法可以实现将普通字符串转换为枚举实例 枚举类型名称.valueOf(“a”)
    compareTo() 该方法用于比较两个枚举对象在定义时的顺序 枚举对象.compareTo()
    ordinal() 该方法用于得到枚举成员的位置索引 枚举对象.ordinal()

    (1)、values()
    枚举类型实例包含一个values()方法,该方法将枚举类型的成员变量实例以数组的形式返回,也可以通过该方法获取枚举类型的成员。
    例:在项目中创建ShowEnum类,在该类中使用枚举类型中的values()方法获取枚举类型中的成员变量。
    在这里插入图片描述
    使用枚举类型中的values()方法获取枚举类型中的成员变量,运行结果:
    在这里插入图片描述
    例子中,由于values()方法将枚举类型的成员以数组的形式返回,所以根据该数组的长度进行循环操作,然后将该数组中的值返回。
    (2)、valueOf()与compareTo()
    枚举类型中静态方法valueOf()可以将普通字符串转换为枚举类型,而compareTo()方法用于比较两个枚举类型对象定义时的顺序。
    例:在项目中创建EnumMethodTest类,在该类中使用枚举类型中的valueOf()与compareTo()方法。
    在这里插入图片描述
    使用compareTo()方法比较两个枚举类型成员定义的顺序,运行结果:
    在这里插入图片描述
    调用compareTo()方法返回的结果,正值代表方法中参数在调用该方法的枚举对象位置之前;0代表两个互相比较的枚举成员的位置相同;负值代表方法中参数在调用该方法的枚举对象位置之后。

    展开全文
  • i. 定义具有两个私有数据成员,分别表示字符串的存储地址(char*类型)和长度(int类型)。实现字符串String的构造函数、析构函数、拷贝构造函数、赋值运算。 ii. 实现运算符重载:String + String、String + char * ...

    2、实现一个自定义的字符串类String。

    i. 定义具有两个私有数据成员,分别表示字符串的存储地址(char*类型)和长度(int类型)。实现字符串类String的构造函数、析构函数、拷贝构造函数、赋值运算。
    ii. 实现运算符重载:String + String、String + char *
    iii. 重载运算符 << 和 >> ,实现字符串的输入和输出。
    iv. 在main函数写一段简单的使用该字符类(包含上述运算)的测试程序

    test.cpp

    #include"string.h"
    #include<iostream>
    using namespace std;
    int main()
    {
    	String s1, s2;
    	s1 = "chenhaoran";
    	s2 = "zhangchao";
    	cout << s1<<endl;
    	String s3(s2);
    	cout << s3<<endl;
    	String s4 = s3;
    	cout << s4 << endl;
    	//cout << s4 + s2 << endl;
    	String s6 = s4 + s2;
    	s1 = s4 + s2;//这不是调用复制构造函数
    	cout << s6 << endl;
    	return 0;
    }
    

    string.h

    #pragma once
    #include<ostream>
    #include<istream>
    using namespace std;
    class String {
    private:
    	char *_str;
    	int _size;
    public:
    	String();
    	~String();
    	String(const String &s);
    	//friend String operator +(const String &temp1, const String &temp2);
    	//friend String operator +(const String &temp1, const char * temp2);
    	String operator+(const String &temp);
    	String operator+(const char *temp);
    	//String &operator =(String temp);
    	String &operator =(const char *temp);
    	friend ostream &operator<< (ostream &out, String &temp);//这里为什么是取地址符
    	friend istream &operator>>(istream &in,String &temp);
    
    };
    
    

    string.cpp

    #include"string.h"
    #include<string.h>
    #include<iostream>
    using namespace std;
    String::String()
    {
    	_str = new char[20];
    	_size = 0;
    }
    String::~String()
    {
    	if (this->_str != NULL)
    	{
    		delete[] this->_str;	
    		this->_str = NULL;
    		this->_size = 0;
    	}
    }
    String::String(const String &s)
    {
    	int len = strlen(s._str);
    	_str = new char[len + 20];
    	strcpy(_str, s._str);
    	_size = s._size;
    }
    String String::operator+(const String &temp)
    {
    	String *p=new String();
    	p->_str = new char[strlen(this->_str) + strlen(temp._str) + 1];
    	strcpy(p->_str, this->_str);
    	strcat(p->_str, temp._str);
    	return *p;
    }
    /*
    String operator +(const String &temp1,const String &temp2)
    {
    	//String temp(temp1);
    	String temp;
    	strcpy(temp._str, temp1._str);
    		//strcat(temp._str, temp1._str);
    	temp._size += temp1._size;
    	strcat(temp._str, temp2._str);
    	temp._size += temp2._size;
    	return temp;
    }
    String operator +(const String &temp1,const char *temp2)
    {
    	String temp(temp1);
    	int len = strlen(temp2);
    	strcat(temp._str, temp2);
    	temp._size += len;
    	return temp;
    
    }
    */
    //String &String::operator=(String temp)
    //{
    	
    //	strcpy(this->_str, temp._str);
    //	this->_size = temp._size;
    //	return *this;
    //}
    String &String::operator=(const char *temp)
    {
    	memset(this, '\0', this->_size);
    	strcpy(this->_str, temp);
    	this->_size = strlen(temp);
    	return *this;
    }
    ostream &operator<< (ostream &out,String &temp)
    {
    	out << temp._str;
    	return out;
    }
    istream &operator>> (istream &in,String &temp)
    {
    	in >> temp._size;
    	return in;
    }
    
    展开全文
  • Java 成员有哪些?

    千次阅读 2019-05-29 10:13:35
    成员有5:属性、方法、构造器、代码块、内部 具有相同属性(特征)和行为(动作)对象的集合,是抽象出来的。 属性:描述类型中的的特征(未完待续…) ...

    类的成员有5类:属性、方法、构造器、代码块、内部类

    类:具有相同属性(特征)和行为(动作)对象的集合,是抽象出来的。

    属性:描述类型中的的特征(未完待续…)

    展开全文
  • C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的封装C++语言中,对于一个枚举类型(enum),其成员值在所属枚举类型的声明作用域内是不可重复的。这个继承自C语言的特性,使我在写程序时碰到有相同...
  • C++中的——的静态成员

    千次阅读 2018-09-03 16:04:20
    静态数据成员类型可以是常量、引用、指针、类类型等。 二、使用的静态成员 2、的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据,静态数据成员被所有该类型的对象共享。 3、静态...
  • “error 对成员xx1的请求出现在XX2中,但后者具有非类类型 ” 出现问题的原因要么是有跟结构体、union、等重名的变量,要么是下标、“.”或“->”错误导致 重名的情况往往只出现在某一个函数中,昨晚一个师弟的...
  • 错误 6 类型“Web_MetenLive.zhuanti.Chongqing.Inf02”已定义了一个名为“Page_Load”的具有相同参数类型成员 E:\项目\MetenSite\MetenSite\MetenSite\MetenSite.Web(MetenLive)\zhuanti\Chongqing\Inf02.aspx.cs...
  • C++语言中,对于一个枚举类型(enum),其成员值在所属枚举类型的声明作用域内是不...而在Visual Basic 6和.net系列语言中,两个不同的Enum类型可以具有相同的成员,在使用时只需加上Enum类型名称。目前就是要在
  • C++的const类成员函数

    万次阅读 多人点赞 2013-03-04 18:00:42
    我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误。例如, const char blank = ‘’; blank = ‘\n’; // 错误 面向对象程序设计中,为了体现封装性,通常不允许直接...
  • 枚举——具有类域和强类型的枚举 枚举(“新的枚举”,“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 可转换的枚举类型默认被转换为int类型,在那些不需要枚举类型表现为int类型的情况下,这...
  • 数据成员类型可以是该成员所属的类类型。非 static 成员被限定声明为其自身对象的指针或引用” 这两个问题的症结一眼可以看出,在于static是属于而不属于任何一个对象。但仅拿这句话,想要辨析清楚标题中...
  • Java类成员和实例成员

    千次阅读 2011-08-04 09:34:20
    Java中的成员(属性和方法)可以分成两种,分别是实例成员类成员。 一、什么是实例成员类成员?  实例成员中是属于对象的,即属于对象级别的,它包括实例成员属性(也称为实例成员变量)和实例成员方法,...
  • c++的默认成员函数

    千次阅读 2019-05-14 21:23:08
    这些默认的类成员函数, 在创建的时候, 编译器会自动调用, 但是自动调用并不意味着他们能完成用户所期待的所有任务, 像构造函数, 析构函数, 拷贝构造函数, 赋值重载会在某些情况下需要用户根据程序的需要自定义实现...
  • 《C++:表达式必须包含类类型

    千次阅读 2019-04-04 14:31:21
    出现“表达式必须包含类类型”这种报错,可能就是声明对象为基本类型的变量和声明的对象为指针时调用成员变量的方式使用错误导致的。声明对象为基本类型的变量时,应该使用直接成员访问运算符(.)来访问;...
  • 成员变量的默认值

    千次阅读 2018-08-01 08:42:04
    数据类型 默认值 基本数据类型 整数类型(byte,short,int,long) 0   浮点数类型(float,double) 0.0   字符类型(char) ... 布尔类型(boolean) ... 数组,,接口 null  ...
  • STL中成员类型的作用

    千次阅读 2015-08-11 12:52:35
    C++中的类成员有三部分:成员变量,成员函数,成员类型。 如果在内部嵌套定义了一个类型,比如MyClass中有一句 typedef int integer;那么就可以这样来定义变量 MyClass::integer a; 实际上就相当于定义了一个...
  • 友元提供了不同成员函数之间、成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个中的成员函数可以访问中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个...
  • C++-、封装性、成员函数

    千次阅读 2017-02-09 22:59:38
    struct将所有成员都默认为public权限,这很不安全。因此C++引进了功能与struct相同但更安全的数据类型——。说明: 声明中的访问限定符没有先后次序,通常将private放在后面,将public放在前面,方便了解的...
  • C++ static、const和static ...的静态成员函数、静态成员变量是和相关的,而不是和的具体对象相关的。即使没有具体对象,也能调用的静态成员函数和成员变量。一般的静态函数几乎就是一个全局函数,只不过
  • C#成员详解

    千次阅读 2010-06-02 17:46:00
    1.类成员的分类 2.成员的可访问性 3.成员的修饰符 4.方法 5.字段 6.事件 7. 析构函数 8.构造方法(constructor) 9.常量 10.属性
  • 【Qt】数据类型和有用的数据操作

    千次阅读 2018-11-22 14:38:29
    Qt提供的数据类型分为基本数据类型形态的数据类型。   基本数据类型 Qt支持多个平台,创建的应用程序需要在多种平台上都具有相同大小的数据类型。为了能精确指定数据类型的大小,Qt提供了一下的基本数据类型...
  • CEdit(编辑)成员函数及消息

    千次阅读 2013-12-06 11:45:24
    CEdit(编辑) CObject -> CCmdTarget -> CWnd -> CEdit 【说 明】CEdit提供了Windows 编辑...在两种情形下,首先调用CEdit的构造函数构造CEdit的对象,再调用成员函数Create创建Windows 编辑控件并将其与CEd
  • C++中中的静态变量成员与静态成员函数 声明为static的类成员成员数据或成员函数)称为的静态成员特性 : 静态成员为所有的对象所共享,不属于某个具体的事例 静态成员即可用类名::静态成员或者对象....
  • c++ 类成员指针

    千次阅读 2011-07-12 21:48:07
    假定 Screen定义了四个新成员函数——forward() back() up()和down() 它们分别向右、向左、向上和向下移动光标。首先,我们在体中声明这些新的成员函数 :class Screen { public: inline Screen& forward();
  • 指向成员的指针

    千次阅读 2009-07-10 14:00:00
    指向成员的指针 在C++中,可以说明指向的数据成员成员函数的指针。 指向数据成员的指针格式如下: ::* 指向成员函数的指针格式如下: (::*)() 例如,设有如下一个A: class A { public: int ...
  • C#类成员访问修饰符

    千次阅读 2015-09-10 15:07:55
    今天想不起C#中的默认访问修饰符是internal了还以为是public呢,单元测试时候一直是黄色敬告。所以把csdn的东西翻出了(在百度上搜不到的)。当用internal修饰(c#默认不加修饰符就是internal)可能会出现问题:...
  • 深入理解C# 静态与非静态、静态成员的区别 静态 静态与非静态的重要区别在于静态不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个时使用static关键字,具有两个方面...
  • STL的每一个容器模版中,都定义了一组对应的迭代器。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 下面来稍微看一下iterator 和 reverse_iterator 的源码:  C++ ...
  • Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *, char *);...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 410,815
精华内容 164,326
关键字:

具有类类型的成员