精华内容
下载资源
问答
  • 如果一个被序列化的对象中,包含有HashMap、HashSet或HashTable集合,则这些集合中不允许保存当前被序列化对象的直接或间接引用。因为,这些集合类型在反序列化的时候,会调用到当前序列化对象的hashCode方法,而...

    如果一个被序列化的对象中,包含有HashMap、HashSet或HashTable集合,则这些集合中不允许保存当前被序列化对象的直接或间接引用。因为,这些集合类型在反序列化的时候,会调用到当前序列化对象的hashCode方法,而此时(序列化对象还未完全加载)计算出的hashCode有可能不正确,从而导致对象放置位置错误,破坏反序列化的实例

    展开全文
  • C++ 类this及返回自身对象引用看这一篇就明白this及返回自身对象引用 this及返回自身对象引用 this:调用成员函数的时候,编译器负责把对象地址传(&myTime)递给成员函数中隐藏的this形参。 在系统角度来...

    C++ 类this及返回自身对象的引用看这一篇就明白

    this及返回自身对象的引用

    this:调用成员函数的时候,编译器负责把对象地址传(&myTime)递给成员函数中隐藏的this形参。
    在系统角度来看,任何对类成员的直接访问都是被this隐式调用的。

    1. this有个const修饰符,只能用来指向已确定的那个对象,不能更改。
    2. this只能在成员函数中使用,全局函数静态函数不能使用this。
    3. 在成员普通函数中,this是一个指向非const对象的const指针。(this 等价于 Time *const this,const修饰this,this不能指向其他对象,但this指向的对象中的成变量可以被修改。)
    4. 在const成员函数中,this指针是一个指向const对象的const指针(this 等价于 const Time * const this)。
    class Time {
    public:
    	int hour;
    	int minute;
    public:
    	//把对象自己返回去了
    	Time& add_hour(int temp_hour);
    	Time& add_minute(int minute);
    };
    
    //实际工作中,this能省则省。
    Time& Time::add_hour(int temphour)  {
    	this->hour += temphour;//等价于 hour += temphour;
    	return *this;//把对象自己返回去了,固定写法。指向本对象的指针。*this表示对象本身。
    }
    Time& Time::add_minute(int minute) {
    	this->minute += minute;//区分成员变量和形参
        return *this;
    }
    
    	Time myTime;
    	myTime.add_hour(3);
    	myTime.add_hour(3).add_minute(10);//返回自己,可以连续调用。
    
    展开全文
  • 在普通成员函数中,this是一个指向非const对象的const指针的const指针(类型为A,那么this就是 A *const this),表示this只能指向当前A对象对象指针。 在const成员函数中,this指针是一个指向const对象的const...

    首先来看一下如下代码,之前在学习命名空间的时候知道用using namespace std;声明后直接调用cout就不用写前面的std::,那么在matest函数中,给m_a赋值为什么是A::m_a呢

    #include <iostream>
    
    using namespace std;
    
    class A
    {
    public:
    	A(int a):m_a(a){}
    	void matest(int n);
    	void macout()
    	{
    		cout << m_a << endl;
    	}
    private:
    	int m_a;
    };
    
    void A::matest(int n)
    {
    	m_a = n;
    }
    
    int main()
    {
    	A a(1);
    	a.macout();
    	a.matest(10);
    	a.macout();
    
    	return 0;
    }
    
    1
    10
    

    在调用成员函数时,编译器负责把这个对象的地址(&a)传递给这个成员函数中的一个隐藏的this形参。
    在系统角度看来,任何对类成员的直接访问都被看成是通过this做隐式调用的。

    a.matest(10);//可以理解为a.matest(&a,10);
    

    在matest函数中的赋值

    m_a = 10;//其实是this->m_a = 10
    

    this是有一个const的修饰

    • this指针只能在成员函数中使用,全局函数、静态函数都不能使用this指针。
    • 在普通成员函数中,this是一个指向非const对象的const指针的const指针(类型为A,那么this就是 A *const this),表示this只能指向当前A对象的对象指针。
    • 在const成员函数中,this指针是一个指向const对象的const指针(在mutable博客中提到,const修饰的函数里面不能修改类参数的任何状态,类型为A,this就是const A *const this类型的指针)
    #include <iostream>
    
    using namespace std;
    
    class A
    {
    public:
    	A(int a):m_a(a){}
    	A& matest(int m_a);
    	void macout()
    	{
    		cout << m_a << endl;
    	}
    private:
    	int m_a;
    };
    
    A& A::matest(int m_a)
    {
    	m_a = m_a;
    
    	return *this;//把对象自己给返回回去
    }
    
    int main()
    {
    	A a(1);
    	a.macout();
    	a.matest(10);
    	a.macout();
    
    	return 0;
    }
    

    以上代码中m_a与A::m_a是一样的,那么a.matest(10);的调用结果如下

    1
    1
    

    这时候就可以用this来区分

    this->m_a = m_a;
    
    1
    10
    

    还有一种比较有意思的是

    #include <iostream>
    
    using namespace std;
    
    class A
    {
    public:
    	A(int a):m_a(a){}
    	A& matest(int m_a);
    	void macout()
    	{
    		cout << m_a << endl;
    	}
    private:
    	int m_a;
    };
    
    A& A::matest(int m_a)
    {
    	this->m_a = m_a;
    
    	return *this;//把对象自己给返回回去
    }
    
    int main()
    {
    	A a(1);
    	a.macout();
    	a.matest(10).matest(15).macout();
    
    	return 0;
    }
    

    结果

    1
    15
    

    因为A::matest返回的是对象自己,所以可以接着进行操作。

    展开全文
  • 本章对我们要操作的excel的元素进行简单介绍,包括我们要使用的基本对象对象的方法、属性。 一、Excel基本对象简介 我们要使用程序去操作Excel表格,那么就必须告诉程序我们操作的对象是什么?Excel中我们需要...

    引言

    上一张介绍了窗体,主要目的是可以输入各种过滤条件。那么怎么展示呢?我们之前已经确定要使用excel本身来展示过滤(查询)结果。本章对我们要操作的excel的元素进行简单介绍,包括我们要使用的基本对象,对象的方法、属性。

    一、Excel基本对象简介

    我们要使用程序去操作Excel表格,那么就必须告诉程序我们操作的对象是什么?Excel中我们需要操作的对象可以分这么几个:

    1. Excel本身(Application),比如打开,关闭,保存
    2. 工作簿(WorkBook)
    3. 工作页签(WorkSheet)
    4. 单元格(Rang)
    • 他们基本的层次关系如下图:

    当然这些最基础的对象,也是最常用的对象。 还有如图表对象chart等等

    二、对象的引用

    2.1 Application对象

    Application对象代表整个 Microsoft Excel 应用程序

    Application 对象包括:

    应用程序范围的设置和选项。

    返回顶级对象的方法,如 ActiveCellActiveSheet 等。

    • 示例1:

    使用 Application 属性可返回 Application 对象。下例对 Application 对象应用 Windows 属性。

    sub test
        Application.Windows("book1.xls").Activate
    end sub
    • 示例2:

    Application.ActiveCell 属性,返回range对象

    请仔细区分活动单元格和选定区域。活动单元格为选定区域内部的一个单元格。而选定区域可以包含多个单元格,但只有一个单元格为活动单元格。下列表达式都是返回活动单元格,并且都是等效的,add1和add2是相同的值。

    Sub test()
        Dim add1, add2 As String
        add1 = Application.ActiveCell.Address
        add2 = ActiveCell.Address
        MsgBox add1 & add2
    End Sub

    Application.ActiveChart 属性,返回chart对象

    Application.ActiveSheet属性,返回sheet对象

    Application.ActiveWorkbook属性,返回workbook对象

    2.2 WorkBook对象

    workbook代表一个 Microsoft Excel 工作簿。workbook对应的还有一个workbooks对象,Workbook 对象是 Workbooks 集合的成员。Workbooks 集合包含 Microsoft Excel 中当前打开的所有 Workbook 对象。

    • 示例:

    使用 Workbooks(index)(其中index 是工作簿名称或索引号)可返回一个 Workbook 对象。下例激活工作簿一。

    先使用Workbooks的add方法创建一个工作簿,注释。然后在使用count方法查看由几个工作簿,最后使工作簿1激活。

    Sub test()
        'Workbooks.add (xlWBATChart)
        MsgBox Workbooks.Count & Workbooks(2).Name
        Workbooks(1).Activate
    End Sub

    编号指示创建或打开工作簿的顺序。Workbooks(1) 是创建的第一个工作簿,而 Workbooks(Workbooks.Count)Workbooks 是最后一个。激活某工作簿并不更改其索引号。所有工作簿均包括在索引计数中,即便是隐藏工作簿也是如此。

    Name 属性返回工作簿名称。您不能通过使用此属性来设置该名称;如果您需要更改该名称,请使用 SaveAs 方法,将该工作簿保存为其他名称。下例激活名为“Cogs.xls”的工作簿(该工作簿必须已经在 Microsoft Excel 中打开)中的 Sheet1。

    2.3 WorkSheet对象

    WorkSheet对象代表一个工作表。WorkSheet对应的还有一个WorkSheets对象

    Worksheet 对象是 Worksheets 集合的成员。Worksheets 集合包含某个工作簿中所有的 Worksheet 对象。

    Worksheet 对象也是 Sheets 集合的成员。Sheets 集合包含工作簿中所有的工作表(图表工作表和工作表)。

    • 示例1:

    使用 Worksheets(index)(其中index 是工作表索引号或名称)可返回一个 Worksheet 对象。下例隐藏活动工作簿中的工作表一。

    Sub test()
        Worksheets(1).Visible = False
    End Sub

    工作表索引号指示该工作表在工作簿的标签栏上的位置。Worksheets(1) 是工作簿中第一个(最左边的)工作表,而 Worksheets(Worksheets.Count) 是最后一个。所有工作表均包括在索引计数中,即便是隐藏工作表也是如此。

    执行上述命令的结果比较:

    执行前:sheet4存在

    执行后:sheet4隐藏了

    • 示例2:

    使用 Add 方法可创建一个新工作表并将它添加到集合。下例将两个新工作表添加到活动工作簿的工作表一之前

    Sub test()
        Worksheets.add Count:=2, Before:=Sheets(1)
    End Sub

    执行前:

    执行后:

     2.4 Range对象

    Range对象代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域 。

    返回Range 对象的属性和方法:

    1. Range 属性
    2. Cells 属性
    3. RangeCells
    4. Offset 属性
    5. Union 方法
    • 示例1:

    使用 Range(arg)(其中arg 为区域名称)可返回一个代表单个单元格或单元格区域的 Range 对象。下例将单元格 A1 中的值赋给单元格 A5。 

    Sub test()
        Worksheets("Sheet3").Range("A5").Value = _
        Worksheets("Sheet3").Range("A1").Value
    End Sub

    执行前:

    执行后:

    • 示例2: 

    下例通过为区域 A1:H8 中的每个单元格设置公式,用随机数字填充该区域。如果在不带对象识别符(句点左边的对象)的情况下使用 Range 属性,该属性会返回活动表上的一个区域。如果活动表不是工作表,则该方法失败。在使用没有显式对象识别符的 Range 属性之前,请先使用 Activate 方法激活一个工作表。 

    Sub test()
        Worksheets("Sheet3").Activate
        Range("A1:H8").Formula = "=Rand()"    'Range is on the active sheet
    End Sub
    • 示例3:

     使用 Cells(row,column)(其中row 是行号,column 是列标)可返回一个单元格。第二行,将单元格 A1 赋值为 24。第三行,设置单元格 A2 的公式

    Sub test()
        Worksheets("Sheet3").Activate
        ActiveSheet.Cells(1, 1).Value = 24
        ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
    End Sub

     结果:

    • 示例4:

    使用cells属性,做递增赋值操作。行递增年份,列递增季度。并且给范围内的表格设置属性。

    使用 Range(cell1, cell2)(其中cell1cell2 是指定起始和终止单元格的 Range 对象)可返回一个 Range 对象。

    注意每个 Cells 属性之前的句点。如果前导的 With 语句应用于 Cells 属性,那么这些句点就是必需的。本示例中,句点指示单元格处于工作表一上。如果没有句点,Cells 属性将返回活动工作表上的单元格。

     

    Sub SetUpTable()
        Worksheets("Sheet3").Activate
        For TheYear = 1 To 5
            Cells(1, TheYear + 1).Value = 1990 + TheYear
        Next TheYear
        For TheQuarter = 1 To 4
            Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter
        Next TheQuarter
        With Worksheets(6)
            .Range(.Cells(1, 1), _
                .Cells(5, 6)).Borders.LineStyle = xlThick
        End With
    End Sub
    

    结果:

     

    展开全文
  • 列表可以通过引用其元素,改变对象自身(in-place change)。这种对象类型,称为可变数据对象(mutable object),词典也是这样的数据类型。 而像之前的数字和字符串,不能改变对象本身,只能改变引用的指向,称为不可...
  • 对象自身引用(Self-Reference) class A { int x; static A &a; public : A():a(*this){} A(int x, A& aa):x(x),a(aa){} }; void main() { A a1; A a2(1, a1); } 类引用自身须是static...
  • 如果一个被序列化的对象中,包含有HashMap、HashSet或HashTable集合,则这些集合中不允许保存当前被序列化对象的直接或间接引用。因为,这些集合类型在反序列化的时候,会调用到当前序列化对象的hashCode方法,而...
  • 刚刚接触Java时应该听说过一句“万物皆对象”,《Java编程思想》一书中也描述对象“将对象视为奇特的变量,它可以存储数据,除此之外,还可以要求它在自身上执行操作。理论上讲,可以抽象待求解问题的任何概念化构件...
  • 什么叫对象引用对象

    2017-06-03 17:03:00
    1 a =(1,2,3) 2 b =(1,2,3) 3 print (a is b)#false 4 c = [1,2,3] ...d所指向的对象引用了c所指向的对象,如果c所指向的对象发生变化,[注意是对象自身发生变化,而非引用更改指向,比如c = [1,2,3]...
  • 释放对象引用

    2020-01-09 17:32:10
    释放对象引用 一个局部变量的生命周期只存在于其自身类中。如下的例子可以发现,局部变量只能存在于声明该变量的方法中。 public class TestLifeOne { public void read() { int s=42; //s只能限于read()中...
  • 增加了拷贝构造函数只是能够让结果正确的显示,但是在实际开发中,很少采用函数按值返回的形式返回一个对象(相当于赋值一份),浪费了空间不说,还容易造成上述的问题,解决的办法是按引用返回,做如下修改 ...
  • 你这样相当于创建了一个引用自身的结构,所以导致了无限循环。为了理解这个问题,有个基本概念需要搞清楚。 Python没有「变量」,我们平时所说的变量其实只是「标签」,是引用。 python中,”a=b”表示的是对象a引用...
  • 栈上的对象是可以返回的 但不能返回栈上的引用(除非返回对象自身引用) 也就是自己调用一个函数 不能返回其他的引用 只能返回自己的引用 因为其他会在函数结束后释放而自己并没有释放 ----返回对象...
  • 如上,这是一个自己引用自己的类,如果把这种类组成的数组传到前台然后JSON.parse(JSON.stringify(对象数组))的话,就会报错TypeError: Converting circular structure to JSON. 解决办法如下: //假设对象数组为...
  • 从Application对象引用对象

    千次阅读 2009-08-04 10:17:00
    本文以MSDN中的技术文章《Developers Guide to the Excel...Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿、工作表、单元格集合以及它们包含的数据
  • //匿名对象声明方式with ( {} ){ // //这里如何访问对象直接量自身?}方法1var x;with ( x={} ){ // //通过变量x访问对象引用}方法2function self(x){ return x.self = x;}with ( self({}) ){ //通过self成员...
  • 给易语言的类使用引用计数。继承object类之后,a=b 赋值的的时候 a和b指向同一个对象。可以在方法返回自身,达到连续调用类的方法修改同一个对象的目的。
  • 在java的多态中,经常会看到父类的引用对象指向子类的对象,一开始很迷茫,因为按照之前所学的知识,父类的引用对象指向自身对象或者子类的引用对象指向自身对象都不难理解,因此为了方便理解,下面举了一个例子:...
  • 我调用别人的soap服务, ...aaa的时候都能执行,但bbb这行就报错“未将对象引用设置到对象的实例”。 但我调用第二个方法的时候,所有参数都不是null,杂会报这个错呢? 有没可能是服务自身的问题?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,798
精华内容 1,119
关键字:

对象自身引用