标签: acquisition

从Django眼中了解Zope内部

我是zope的新手,之前我在Django工作了大约2.5年.因此,当我第一次跳入Zope(第2版)时(仅因为我的新公司7年来一直使用它),我遇到了这些问题.请帮助我理解它们.

  1. zodb的"真正"目的是什么?我知道它做了什么,但告诉我zodb做的​​一件好事和像Django(没有zodb)这样的框架未命中.

    更新:根据答案,Zodb取代了对ORM的需求.您可以直接将对象存储在db(zodb本身)中.

  2. 据说,zope的杀手功能之一是TTW(通过网络或使用ZMI开发)的理念.但我(和任何开发人员)更喜欢基于文件系统的开发(使用Version控件,使用Eclipse,使用Zope之外的任何喜欢的工具).那TTW实际上在哪里使用?

  3. 这是一个很大的问题.与Python/Django继承相比,Zope的Acquistion获得了什么"EXTRA Stuff".

  4. 来自Django的Zope真的是一个很好的举动吗?

  5. 任何网站如djangosnippets.org for Zope(v2)?

python django zope zodb acquisition

7
推荐指数
4
解决办法
2871
查看次数

是否会调用抛出异常的C++类的析构函数?

假设我有一个这样的类:

#include <iostream>

using namespace std;

class Boda {
    private:
        char *ptr;

    public:
        Boda() {
            ptr = new char [20];
        }
        ~Boda() {
            cout << "calling ~Boda\n";

            delete [] ptr;
        }

        void ouch() {
            throw 99;
        }
};

void bad() {
    Boda b;
    b.ouch();
}

int main() {
    bad();
}
Run Code Online (Sandbox Code Playgroud)

似乎析构函数~Boda永远不会被调用,因此ptr资源永远不会被释放.

这是程序的输出:

terminate called after throwing an instance of 'int'
Aborted
Run Code Online (Sandbox Code Playgroud)

所以似乎我的问题的答案是No.

但是当我抛出一个异常时,我认为堆栈被解开了?为什么没有Boda b对象在我的例子中被破坏?

请帮我理解这个资源问题.我想在将来写出更好的程序.

这也就是所谓的RAII?

谢谢,Boda Cydo.

c++ resources destructor acquisition

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

标签 统计

acquisition ×2

c++ ×1

destructor ×1

django ×1

python ×1

resources ×1

zodb ×1

zope ×1