为什么我仍然可以给 const value 一个新的值
why can I still give const value a new value
书上说const的值一旦给了就不能改了,不过好像给了还是可以给的
#include<iostream>
using namespace std;
const int fansc(100);
cout<< fansc << endl; //output:100
int fansc(20);
cout<< fansc << endl;//output:20
您提供的 C++ 代码无法编译,这是正确的。 A const
变量(a) 嗯,...常数。错误显示在以下程序和记录中:
#include <iostream>
using namespace std;
int main() {
const int fansc(100);
cout << fansc << endl;
int fansc(20);
cout << fansc << endl;
}
pax> g++ --std=c++17 -Wall -Wextra -Wpedantic -o prog prog.cpp
prog.cpp: In function ‘int main()’:
prog.cpp:6:9: error: conflicting declaration ‘int fansc’
6 | int fansc(20);
| ^~~~~
prog.cpp:4:15: note: previous declaration as ‘const int fansc’
4 | const int fansc(100);
| ^~~~~
剩下您在评论中提到的 Anaconda 位。我对此没有什么经验,但在我看来,唯一可行的方法是如果第二个 fansc
定义是以某种方式在与第一个不同的 scope 中创建的。在真正的 C++ 代码中,它会是这样的:
#include <iostream>
using namespace std;
int main() {
const int fansc(100);
cout << fansc << endl;
{ // new scope here
int fansc(20);
cout << fansc << endl;
} // and ends here
cout << fansc << endl;
}
输出为:
pax> g++ --std=c++17 -Wall -Wextra -Wpedantic -o prog prog.cpp && ./prog
100
20
100
(a) 是的,我 知道 这是自相矛盾的:-)
#include<iostream>
using namespace std;
const int fansc(100);
cout<< fansc << endl; //output:100
int fansc(20);
cout<< fansc << endl;//output:20
您提供的 C++ 代码无法编译,这是正确的。 A const
变量(a) 嗯,...常数。错误显示在以下程序和记录中:
#include <iostream>
using namespace std;
int main() {
const int fansc(100);
cout << fansc << endl;
int fansc(20);
cout << fansc << endl;
}
pax> g++ --std=c++17 -Wall -Wextra -Wpedantic -o prog prog.cpp
prog.cpp: In function ‘int main()’:
prog.cpp:6:9: error: conflicting declaration ‘int fansc’
6 | int fansc(20);
| ^~~~~
prog.cpp:4:15: note: previous declaration as ‘const int fansc’
4 | const int fansc(100);
| ^~~~~
剩下您在评论中提到的 Anaconda 位。我对此没有什么经验,但在我看来,唯一可行的方法是如果第二个 fansc
定义是以某种方式在与第一个不同的 scope 中创建的。在真正的 C++ 代码中,它会是这样的:
#include <iostream>
using namespace std;
int main() {
const int fansc(100);
cout << fansc << endl;
{ // new scope here
int fansc(20);
cout << fansc << endl;
} // and ends here
cout << fansc << endl;
}
输出为:
pax> g++ --std=c++17 -Wall -Wextra -Wpedantic -o prog prog.cpp && ./prog
100
20
100
(a) 是的,我 知道 这是自相矛盾的:-)