小编K.K*_*K.K的帖子

指向成员变量的指针

以下程序输出始终为1 1 1.在"C++对象模型内部"一书中,提到它将给出偏移量.目的还在于找出对象布局.但是,我对输出感到困惑.使用g ++ 4.5.2

class Test
{
    public:
        float a;
        float b;
        float c;
};

int main()
{
    float Test::*ptr = &Test::a;
    float Test::*ptr1 = &Test::b;
    float Test::*ptr2 = &Test::c;
    cout<<ptr<<endl;
    cout<<ptr1<<endl;
    cout<<ptr2<<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
1
1
Run Code Online (Sandbox Code Playgroud)

编辑(跟进问题):在书中提到origin.y = 0可以转换为&origin + (Point3d::y-1)原点是Point3d的对象,y是Point3d类的成员变量.虽然当我编译它时给了我编译错误.

c++

4
推荐指数
2
解决办法
4616
查看次数

如何使用新语法

当我读一些文章时,我发现这条线是如此神秘.

new (new_ptr + i) T(std::move(old_ptr[i]));
Run Code Online (Sandbox Code Playgroud)

有人可以解释这种语法是如何工作的吗?

c++

4
推荐指数
2
解决办法
260
查看次数

在Java中使用scala映射

我有两个文件.一个是scala,另一个是java.

Scala文件有一个返回scala不可变映射的函数.

Java文件想要将该映射用作字典.

我是scala和java的新手.如何将该scala映射转换为java dicionary?

java scala scala-collections

4
推荐指数
2
解决办法
5092
查看次数

用c ++命名的vptr名称?

即使有很多关于如何在c ++中处理虚函数的文章,我也无法清楚一个基本的疑问.派生类的vptr变量是否被基类变量覆盖.ptr varible的名字也被破坏了吗?

Class Base
{
public:
    virtual void test();
};

class Derived 
{
public:
     virtual void test();
};
Run Code Online (Sandbox Code Playgroud)

如果我打电话

Base b = new Derived();
b->test();
Run Code Online (Sandbox Code Playgroud)

它转变为

(*b->vptr[<index>])(b);
Run Code Online (Sandbox Code Playgroud)

索引指向vtable条目.

我怀疑这个vptr是否也被命名为?

c++ virtual-functions

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

标签 统计

c++ ×3

java ×1

scala ×1

scala-collections ×1

virtual-functions ×1