小编Luc*_*cas的帖子

仅功能对象的内存结构?

假设我们有一个看起来像这样的类:

class A 
{ 
    public:
        int FuncA( int x );
        int FuncB( int y );

        int a;
        int b;
};
Run Code Online (Sandbox Code Playgroud)

现在,我知道这个类的对象将只用这两个对象在内存中进行布局ints.也就是说,如果我创建一个类实例的向量A,则ints一个实例将有两个实例,然后ints是第二个实例的两个实例.对象是POD.

但是让我们说这个课程看起来像这样:

class B
{ 
    public:
        int FuncA( int x );
        int FuncB( int y );
};
Run Code Online (Sandbox Code Playgroud)

这个类的对象在内存中看起来像什么?如果我用向量中的实例填充B向量?向量中有什么?我被告知非虚拟成员函数最终被编译为自由函数,这些函数与声明它们的类的实例完全无关(虚函数也是,但是对象存储带有函数指针的vtable) .访问限制仅仅是语义上的"人"级别.只有类(和vtable等)的数据成员实际上构成了对象的内存结构.

那么,类的对象B在内存中看起来又是什么样的呢?它是某种占位符价值吗?必须有东西,我可以拿对象的地址.它必须指向一些东西.无论是什么,编译器是否允许内联/优化这些对象并将方法调用视为正常的自由函数调用?如果我创建这些的向量并在每个对象上调用相同的方法,编译器是否可以消除向量并用一堆普通调用替换它?

我只是好奇.

c++

8
推荐指数
2
解决办法
970
查看次数

向用户显示异常调试信息

我正在努力为我的OSS应用程序添加异常和异常处理.例外从一开始就是一般的想法,但是我想找到一个好的异常框架,并且在开始使用它们之前,要完全理解C++异常处理约定和习惯用法.我在使用C#/ .Net,Python和其他使用异常的语言方面有很多经验.我对这个想法并不陌生(但远非主人).

在C#和Python中,当发生未处理的异常时,用户会获得一个很好的堆栈跟踪,并且通常会获得许多非常有用的无价调试信息.如果你正在开发一个OSS应用程序,让用户将这些信息粘贴到问题报告中......好吧,我只是说我发现没有它就很难生存.对于这个C++项目,我得到"应用程序崩溃",或者来自更明智的用户,"我做了X,Y和Z,然后它崩溃了".但我也想要调试信息!

我已经(并且非常困难)让我感到安心,因为我永远不会看到跨平台和交叉编译的方式获得C++异常堆栈跟踪,但我知道我可以获得函数名称和其他相关信息.

现在我想要那些未经处理的例外情况.我正在使用boost :: exception,他们有这个非常好的diagnostic_information thingamajig,它可以打印出(unmangled)函数名,文件,行,最重要的是,程序员添加到该异常的其他异常特定信息.

当然,我会尽可能地处理代码中的异常,但我认为我不会让一对夫妇溜走(当然是无意的).

所以我想做的是将我的主入口点包装在一个try块中catch,创建一个特殊的对话框,通知用户应用程序中发生了错误,当用户单击"更多"或"调试"时会显示更详细的信息信息"或其他什么.这将包含来自diagnostic_information的字符串.然后,我可以指示用户将此信息粘贴到问题报告中.

但是一种唠叨的直觉感觉告诉我,将一切都包装在一个试块中是一个非常糟糕的主意.我将要做什么愚蠢的事情?如果是(即使不是),有什么更好的方法来实现我想要的?

c++ debugging boost exception debug-information

6
推荐指数
2
解决办法
5664
查看次数

使用Python中的指数*解析表示float*的字符串

我有一个大型文件,其中包含数字6,52353753563E-7.所以在那个字符串中有一个指数.float()死在这上面.

虽然我可以编写自定义代码来预处理字符串到float()可以吃的东西,但我正在寻找将它们转换为浮点数的pythonic方法(类似于传递到某处的格式字符串).我必须说我很惊讶float()无法用这样的指数处理字符串,这是非常常见的东西.

我正在使用python 2.6,但如果需要,3.1是一个选项.

python

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

官方XHTML 1.1 DTD与官方XHTML 1.1 XML Schema

我可以选择针对官方XHTML 1.1 DTD验证XHTML 1.1文档(我使用复数,因为"主"DTD实际上包括其他几个)或者针对官方XHTML 1.1 XML Schema.

现在我知道XML Schema语言更具表现力和强大功能,因此可以检查更多内容.我想知道的是这些"额外"功能是否实际上在官方模式中使用.换句话说,验证这些模式是否会检查更多的东西,而不是验证这些DTD?

html xml xhtml xsd dtd

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

如何使用javascript在页面上选择任意文本?

假设我有一个contentEditable div,用户可以编辑和更改其中的文本和元素.如何div使用javascript 随意更改此选项?通过"改变"我的意思不是"改变任何的用户选择的内容",我的意思是真正改变什么选择.然后,用户应该能够键入选择内容,将其替换为其他内容.

这应该考虑到我可能想要跨元素选择文本.例如:

<p>Some text <span>goes</span> here.</p>
Run Code Online (Sandbox Code Playgroud)

我可能想要选择"一些文字去",或者内部的所有内容<p>.

这只需要在Safari/Webkit中工作.

提前致谢.作为本地代码开发人员,我发现DOM和Javascript一般非常令人沮丧.

javascript webkit

5
推荐指数
2
解决办法
1969
查看次数

一个很好的F#代码库可供学习

I've been teaching myself F# for a while now. I've read Programming F# by Chris Smith (great book) and I've written a few small scripts for getting the job done here and there.

But IMO the best way to learn a new programming language—and more importantly, the idioms that come with it—is to read a good open source codebase written in that language. Naturally, writing code in that language is crucial, but in the beginning, you're basically struggling with your …

f#

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

关于QThread实施的问题

QThread对象表示单个执行线程.但是在创建QThread对象时,或者在start()调用方法时是否创建了OS线程?

我对是否可以放置几个QThread对象感兴趣,操作系统将创建线程start()并在run()返回后终止它们,然后我可以再次重用QThread对象.但我不想在QThread对象没有做任何事情时保留OS资源.

(为了记录,我知道QtConcurrent和QThreadPool,不,他们在这种情况下不能满足我的需求)

qt multithreading qthread

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