小编Abd*_*azi的帖子

C++ 11:我们什么时候需要为默认成员函数专门化"= default"?

做了一个简单的测试,发现"= default"只适用于特殊的成员函数,如下所示:

#include<cstdio>
#include<utility>
struct Base{
    Base(int){printf("Base(int)\n");}
};
struct Derived{
    Derived(int)=default;
};
int main(){
    Derived d(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

clang将报告编译错误:

error: only special member functions may be defaulted
Run Code Online (Sandbox Code Playgroud)

所以如果只允许"特殊成员函数",这个"= default"似乎没用:因为如果我不在"Derived"中给出特殊成员函数的定义,编译器会为我生成一个,等于使用"=默认".

所以我的问题是,为什么以及何时需要"=默认"?

c++ default function member c++11

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

重新定义宏时会发生什么?

#define MY_MACRO 3 --> in A.h
#define MY_MACRO 45 --> B.h
Run Code Online (Sandbox Code Playgroud)
//In C.cpp

#include "A.h"
#include "B.h"

..
..
..
int my_value = MY_MACRO;
Run Code Online (Sandbox Code Playgroud)

my_value是3还是45?

c c++ macros

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

标签 统计

c++ ×2

c ×1

c++11 ×1

default ×1

function ×1

macros ×1

member ×1