language-lawyer

    5热度

    2回答

    今天我发现可以用一个签名在头文件中声明一个函数,并在源文件中用不同的(相似的)签名来实现它。例如,像这样: // THE HEADER example.hpp #ifndef EXAMPLE_HPP #define EXAMPLE_HPP int foo(const int v); #endif // THE SOURCE FILE example.cpp #include

    0热度

    4回答

    COC标准是否隐含或明确地允许这样的语言扩展(或者使用你喜欢的任何其他术语)作为MOC? 也就是说,我们才能技术上呼叫QT(包括MOC)标准的C++实现?

    2热度

    1回答

    这里是例子: struct A { A(const int a):b(a) { } int b; }; struct B { B() : a(5) { } static void A() { } A a; }; int main() { B::A();

    13热度

    2回答

    今天我创建了一个映射,其中值类型没有默认构造函数。我很惊讶我不能使用operator []将元素插入到这个映射中,但我不得不使用insert方法。 那么,对于std :: map的键和值类型的要求究竟是什么? 下面是简单的例子: #include <map> struct A { A(int){} }; int main() { std::map< int, A

    6热度

    2回答

    C99 [节6.3.2.1/1]表示 左值是与一个对象类型或大于空隙以外的不完全类型的表达式; 如果一个左值在评估时没有指定一个对象,则该行为是不确定的。 是什么在部分大胆是什么意思?有人可以用一个例子来解释吗?

    19热度

    3回答

    考虑以下代码, template<class T> struct Sample { typename T::X *x; //declare pointer to T's X }; 在上面的代码中,关键字typename是由编译器必需的,所以它可以嵌套类型和在模板嵌套值之间消除歧义。这意味着,在没有typename关键字,编译器将其解释为的T :: X,其中x的乘法, T::X

    1热度

    3回答

    请考虑以下示例。 #include <iostream> #include <boost/optional.hpp> template < typename A > int boo(const boost::optional<A> &a); template < typename A > int foo(const A &a) { return boo(a); }

    15热度

    7回答

    我的问题很简单。我们什么时候需要一个默认的构造函数? 请参考下面的代码: class Shape { int k; public: Shape(int n) : k(n) {} ~Shape() {} }; class Rect : public Shape { int l; public: Rect(int n): l(n)

    6热度

    1回答

    !免责声明!:请注意,我正在谈论未标记的声明。我知道这可能是一个非正式的术语,我的意思是说声明不是一个typedef,它不声明匿名类型的对象。在这些情况下,一切都很清楚。 问题1: 其下面的是一合式的C++程序? (可多选) //One int main(){ struct{}; //or class{}; should be the same } //Two int main(

    12热度

    1回答

    我有这样的代码时,需要命名空间? GCC和MSVC对编写的代码感到满意,但是另一个编译器抱怨,除非我把名字空间放进去.C++标准说了什么?