小编Gor*_*don的帖子

仅在堆中创建C++对象

class A
{
public:
    A() { printf("constructor"); };
private:
    ~A() {};

};
int main(int argc, char** argv[])
{
    void *p = new A(); //ok
    void *p = new A[5]; //error
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想只在堆中创建对象(也就是说只通过new),所以我将默认的析构函数设置为private.但是,它在我new A()用来创建一个对象时起作用,当我使用时它不起作用new A[5].为什么?我很迷惑.非常感谢!

c++ heap stack class

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

constexpr说明符性能不符合我对C++的期望

我刚刚了解到constexpr说明符函数可以在编译过程中运行,我试着用Debug x86 Mode检查VS 2017的实际性能,结果显示它们之间的时间差很小.它仍然耗费了很多时间而不是"0".我做错了什么,任何人都可以帮助我,非常感谢!

#include <iostream>
#include <time.h>

size_t r_fun(size_t n) noexcept
{
    if (n == 0) return 0;
    if (n == 1) return 1;
    return r_fun(n - 1) + r_fun(n - 2);
}

constexpr size_t c_fun(size_t n) noexcept
{
    if (n == 0) return 0;
    if (n == 1) return 1;
    return c_fun(n - 1) + c_fun(n - 2);
}


int main()
{
    clock_t start, finish;

    start = clock();
    auto r_x = r_fun(40);  
    finish = clock();
    std::cout <<"result:"<< r_x<< …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-optimization visual-studio c++11 c++14

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

标签 统计

c++ ×2

c++11 ×1

c++14 ×1

class ×1

compiler-optimization ×1

heap ×1

stack ×1

visual-studio ×1