相关疑难解决方法(0)

为什么受保护的构造函数会引发此代码的错误?

关于受保护构造函数的一个问题 我了解到受保护的构造函数可以在派生类中使用.但是,我发现下面的代码有错误.为什么会这样?

class A
{
    protected:
        A(){}
};

class B: public A {
    public:
        B() {
            A* f=new A();           // Why it is not working here
        }
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor protected

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

是否有自动noexcept说明符?

我听说noexcept关键字更像是'它永远不应该抛出异常',而不是'它没有'.

我不认为使用noexcept关键字是好的,如果我不确定它是否会抛出异常,但noexcept关键字有时与移动构造函数中的性能有关.

所以我尝试使用noexcept限定符,但如果它在定义中有多个语句就变得更难,它变成了一种复制和粘贴的东西.

template <class T>
void f(T&& t)
    noexcept(noexcept(statement_1) &&
             noexcept(statement_2) &&
             noexcept(statement_3) &&
             noexcept(statement_4) &&
             noexcept(statement_5))
{
    statement_1;
    statement_2;
    statement_3;
    statement_4;
    statement_5;
}
Run Code Online (Sandbox Code Playgroud)

我认为编译器可以判断一个函数的定义是否包含非抛出语句,因此noexcept如果有一个类似的表达式会更容易使用noexcept(auto),但似乎标准中没有这样的东西.

有没有办法简化noexcept表达式?

c++ noexcept c++11 c++14

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

标签 统计

c++ ×2

c++11 ×1

c++14 ×1

constructor ×1

noexcept ×1

protected ×1