小编Mik*_*ung的帖子

绑定和未绑定方法对象的id() - 有时对于不同的对象是相同的,有时对于同一对象是不同的

我已经尝试了一些关于绑定和未绑定方法的代码.当我们调用它们时,我认为它们都会返回对象.但是当我id()用来获取一些信息时,它会返回一些我不理解的东西.

IDE:Eclipse

插件:pydev

Class C(object):
    def foo(self):
        pass

cobj = C()

print id(C.foo)    #1
print id(cobj.foo) #2

a = C.foo
b = cobj.foo

print id(a)        #3
print id(b)        #4
Run Code Online (Sandbox Code Playgroud)

输出是......

5671672

5671672

5671672

5669368
Run Code Online (Sandbox Code Playgroud)

为什么#1和#2返回相同的ID?它们不是不同的对象吗?如果我们分配C.fooconj.foo两个变量,#3和#4返回不同的id.

我认为#3和#4表明它们不是同一个对象,但#1和#2 ......

绑定方法的id和未绑定方法有什么区别?

python methods object

29
推荐指数
2
解决办法
5569
查看次数

"何时"编译器是否隐式声明了默认构造函数?

我知道如果我们不声明它,编译器将生成一个默认构造函数.

而"什么时候"是我感到困惑的一点.

A:

class Base {};
int main()
{
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

B:

class Base {};
int main()
{
    Base b;   // Declare a Base object.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

A和B的区别仅在于B声明Base的真实对象.在我看来,只有当我们声明一个真实对象并且编译器找不到构造函数时,它才会生成一个默认构造函数.

我的问题是:

  1. 代码片段A会生成Base的默认构造函数吗?

  2. 有任何工具可以帮助检查结果吗?我使用Visual Studio 2010,而/ d1 reportAllClassLayout似乎没用.

c++ constructor visual-studio-2010

4
推荐指数
1
解决办法
627
查看次数

标签 统计

c++ ×1

constructor ×1

methods ×1

object ×1

python ×1

visual-studio-2010 ×1