C ++中是否只能使用堆栈变量?

时间:2010-10-26 09:08:38

标签: c++ stack

目前我想在多线程环境中创建包装器访问器类。这个类的目的很简单 - 抓住它的结构锁定并释放它的破坏锁定。除此之外,它与普通指针相同。此外,我想防止在堆区域上创建它以确保最终释放锁。

逆是相当容易的(带有工厂方法的私有构造函数),但我不知道只有堆栈变量是可能的。反正有吗?

2 个答案:

答案 0 :(得分:12)

那么,您为类重载operator new并将其声明为私有?

答案 1 :(得分:0)

我不明白这个问题?在函数范围内定义的任何变量都是仅堆栈。

class Lock {
public:
    Lock() {
        performLock();
    }

    ~Lock() {
        performUnlock();
    }
}

void foo() {
    // ... Code
    Lock onStackOnly;
    // ... Code that is locked
}


void foo() {
    // ... Code
    {
        Lock onStackOnly;
        // ... Code that is locked
    }

    // This code is unlocked.
}