为什么我的以下代码没有引发重复的符号冲突?
我提到了名称重整,但这似乎仅在参数存在差异时出现。但是,这里的参数没有差异。但是,它仍然不会引发冲突。为什么?
好
#include <stdio.h>
void printGood() {
printf("I am good");
}
Run Code Online (Sandbox Code Playgroud)
完美的
#include <stdio.h>
void printGood() {
printf("I am perfect");
}
Run Code Online (Sandbox Code Playgroud)
交流电
extern void printGood();
void bringGood() {
printGood();
}
Run Code Online (Sandbox Code Playgroud)
公元前
extern void printGood();
void bringPerfect() {
printGood();
}
Run Code Online (Sandbox Code Playgroud)
编排器
#include <stdio.h>
void bringGood();
void bringPerfect();
int main() {
printf("bringing good");
bringGood();
printf("bringing perfect");
bringPerfect();
return 1;
}
Run Code Online (Sandbox Code Playgroud)
编译行:
gcc -g -c good.c
gcc -g -c perfect.c
gcc -g -c A.c
gcc -g -c B.c
gcc -g -c orchestrator.c …Run Code Online (Sandbox Code Playgroud) #include <iostream>
class A{
public:
void printit(register int b) {
std::cout<<"inside A";
}
};
class C:public A{
public:
void printit(int b) {
std::cout<<"inside C";
}
};
int main() {
C c;
c.printit(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,printit 是 C 中的一个重写方法,没有存储类寄存器。但是,编译器仍然匹配,并且代码打印“inside C”。为什么寄存器 int 与 int 匹配?