小编Que*_*est的帖子

为什么运算符`?:`没有优先权?

调试后我发现三元运算符?:没有优先级.我的问题是为什么?
我有以下代码:

bool T = true;
cout << ((T == true) ? "true" : "false") << endl;
cout << (T == true) ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

输出:

true
1
Run Code Online (Sandbox Code Playgroud)

现场演示:http://ideone.com/Tkvt9q

c++

24
推荐指数
4
解决办法
2471
查看次数

参考与指针

有什么不同?因为这:

int Value = 50;
int *pValue = &Value;

*pValue = 88;
Run Code Online (Sandbox Code Playgroud)

和ref版本做同样的事情:

int Value = 50;
int &rValue = Value;

rValue = 88;
Run Code Online (Sandbox Code Playgroud)

哪一个更好用?谢谢.

c++ pointers reference

13
推荐指数
3
解决办法
2万
查看次数

通过引用const函数来调用另一个类的非const函数

想象下面的例子:

class A
{
public:
    void doSomeStuff() { std::cout << "SomeStuff" << std::endl; }
};

class B
{
public:
    B(A& a) : a(a) {}
    void constStuff() const { a.doSomeStuff(); }

private:
    A &a;
};
Run Code Online (Sandbox Code Playgroud)

如果doSomeStuff()要更改数据,那也不会产生影响class B吗?为什么允许这种行为?

c++ reference class constants

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

DirectX11 2窗口渲染

如何使用DirectX将对象渲染到2个独立的窗口中?

c++ directx-11

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

如何在模板中添加const限定符

我想const_value_type成为const即使T是一个指针,这是不可能的std::add_const<>
所以我试过这样的事情:

template<typename value_type, bool is_pointer>
struct add_const_pointer{
    typedef const value_type type;
};

template<typename value_type>
struct add_const_pointer<value_type, true>{
    typedef const value_type *type;
};

template<typename T>
class Foo
{
public:
    typedef T value_type;
    typedef add_const_pointer<std::remove_pointer<T>, std::is_pointer<T>::value>::type const_value_type; 
    // here I get compiler error: missing type specifier - int assumed.
}
Run Code Online (Sandbox Code Playgroud)

但我得到编译器错误:缺少类型说明符 - 假定为int.

c++ templates

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

std :: holds_alternative可变参数模板

是否可以将a包装std::holds_alternative到可变参数模板以将其用于更多类型?

例如:

std::variant<bool, int, double, std::string> var = 4;
bool r = std::holds_alternative<bool, double>(var); // holds either bool or double
Run Code Online (Sandbox Code Playgroud)

c++ c++17

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

用指针联盟

我有一个带有2个不同数据类型指针的联合:

union{
    UCHAR *_rawData;
    RGB *_RGBData;
};
typedef struct RGB
{
    UCHAR red;
    UCHAR green;
    UCHAR blue;
}RGB;
Run Code Online (Sandbox Code Playgroud)

稍后在代码中......

_rawData = new UHCAR[126];
_RGBData = new _RGBData[42]; //3 times lower than rawData
Run Code Online (Sandbox Code Playgroud)

所以我的问题是......这样的联盟安全吗?从理论上讲,这两个变量都使用126个字节,所以应该可以,但我不确定,所以我在这里问

c++ unions

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

如果可能,隐式移动构造函数应为 noexcept

基本上按照标准:

继承构造函数 (12.9) 和隐式声明的特殊成员函数(第 12 条)具有异常规范。如果f是继承构造函数或隐式声明的默认构造函数、复制构造函数、移动构造函数、析构函数、复制赋值运算符或移动赋值运算符,则当且仅当异常规范允许时,其隐式异常规范指定类型 ID的隐式定义 直接调用的函数;如果它直接调用的任何函数允许所有异常,并且具有异常规范,则允许所有异常TTfff noexcept(true) 如果它直接调用的每个函数都不允许例外。

因此,截取的以下代码应具有隐式noexcept移动构造函数:

template<typename _Tp>
class Foo
{
public:
    Foo() = default;
    explicit Foo(const std::string& s, const std::function<bool(_Tp&)>& f) : stringField(s), funcField(f) {}

private:
    const std::string stringField;
    std::function<bool(_Tp&)> funcField;
};
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它没有:

int main()
{
    std::cout << "std::string: " << std::is_nothrow_move_constructible_v<std::string> << std::endl;
    std::cout << "std::function: " << std::is_nothrow_move_constructible_v<std::function<bool(std::string&)>> << std::endl;
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ move-constructor noexcept

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

什么','在语法中意味着什么?

我正在寻找一些例子,我不知道这意味着什么:

if(FileExistsA("File.ext"), false)
{
     ....
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

c++ if-statement

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

指向常量数组的指针

我有struct A以下代码:A *const *ppA这段代码是什么意思?它是一个指向常量数组的指针?我不确定所以我在这里问了这个问题

c++ arrays const

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