有这样的功能定义:
template<>
template<>
void object::test<1>()
{
}
Run Code Online (Sandbox Code Playgroud)
什么意思是有双模板<>?
编辑:
我提取了对此示例有效的代码:
#include <iostream>
template <class U>
class A {
template <int n>
void test() {
}
};
template <class T>
class B {
public:
typedef A<T> object;
};
typedef B<int>::object object;
template<>
template<>
void object::test < 1 > () {
}
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码在g ++下编译.
资料来源:TUT测试框架
有这个代码:
#include <iostream>
class Base {
public:
Base(){
std::cout << "Constructor base" << std::endl;
}
~Base(){
std::cout << "Destructor base" << std::endl;
}
Base& operator=(const Base& a){
std::cout << "Assignment base" << std::endl;
}
};
class Derived : public Base{
public:
};
int main ( int argc, char **argv ) {
Derived p;
Derived p2;
p2 = p;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
g ++ 4.6编译后的输出:
Constructor base
Constructor base
Assignment base
Destructor base
Destructor base
Run Code Online (Sandbox Code Playgroud)
为什么要调用基类的赋值运算符呢?据说赋值运算符不是继承的吗?
在LGPL许可证中,我可以使用未经修改的链接代码在商业,封闭的产品中,而无需将产品许可证更改为LGPL.商业产品的LGPL许可证上的Python模块(*.py)怎么样?它被视为链接代码吗?
C++编程语言中的数组索引的类型是什么?例如在这样的声明中:
int tab[5];
Run Code Online (Sandbox Code Playgroud)
什么类型5被转换?或者它可能只是简单的int?
有这个代码:
class A;
template <class T>
void fun() {
A a;
}
class A {
public:
A() { }
};
int main() {
fun<int>();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
g ++ 4.5和g ++ 4.7编译时没有错误.但是clang ++ 3.2(trunk)给出了这个错误:
main.cpp:5:6: error: variable has incomplete type 'A'
A a;
^
main.cpp:1:7: note: forward declaration of 'A'
class A;
^
Run Code Online (Sandbox Code Playgroud)
根据C++标准,哪个编译器是正确的?
函数对象具有属性__defaults__和__kwdefaults__.我看到,如果一个函数有一些默认的参数,然后它们被放在一个元组__defaults__却__kwdefaults__是None.何时使用属性__kwdefaults__?
有这样的代码:
#include <iostream>
#include <string>
int returnnumber() { return 2; }
std::string returntext() { return "siema"; }
int main() {
std::cout << (returntext() += "cze") << std::endl; // siemacze
//std::cout << (returnnumber() += 2) << std::endl; error: lvalue required as left operand of assignment
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么可以更改std :: string的返回值,而不是int?
以下是一些说明及其相应的编码:
55 push %ebp
89 e5 mov %esp,%ebp
83 ec 18 sub $0x18,%esp
a1 0c 9f 04 08 mov 0x8049f0c,%eax
85 c0 test %eax,%eax
74 12 je 80484b1 <frame_dummy+0x21>
b8 00 00 00 00 mov $0x0,%eax
85 c0 test %eax,%eax
74 09 je 80484b1 <frame_dummy+0x21>
c7 04 24 0c 9f 04 08 movl $0x8049f0c,(%esp)
Run Code Online (Sandbox Code Playgroud)
今天的微处理器通常是32位或64位,我猜他们通常以4字节或8字节的块从内存中读取数据.但是,指令可以具有可变长度.微处理器如何解码这些指令,为什么它们的长度不一致以便于实现?
在某些目标文件上有objdump的输出:
$ objdump -h main.o
main.o: file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000000b 00000000 00000000 00000034 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00000000 00000000 00000040 2**2
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000040 2**2
ALLOC
3 .note.GNU-stack 00000000 00000000 00000000 00000040 2**0
CONTENTS, READONLY, CODE
Run Code Online (Sandbox Code Playgroud)
这些标志CONTENTS,ALLOC,LOAD等是什么意思?