我正在看一本根据标准C ++ 11讲授C ++的书。本书显示了一个将子类标记为的示例explicit。
根据我的收集,这将使编译器检查与动态绑定有关的错误,并且override每当您覆盖虚拟函数时,还必须显式使用关键字,否则它将无法正常工作。我确实设置了一个小程序来对此进行测试,但出现错误。而且我从未见过explicit在其他任何地方都可以像这样使用关键字的示例。
这本书提供的信息不正确还是我只是错过了什么?我应该单独使用override关键字吗?
class base {
public:
virtual void f() {
cout << "Called from base" << endl;
}
};
class derived explicit : public base {
public:
void f() override {
cout << "Called from derived" << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
c++ -std=c++11 main.cpp -o main.exe在终端上写给我以下错误:
error: expected unqualified-id
class derived explicit : public base {
^
Run Code Online (Sandbox Code Playgroud) 如何使用指针访问std :: string中的各个元素?没有类型转换为const char *是否可能?
#include <iostream>
#include <string>
using namespace std;
int main() {
// I'm trying to do this...
string str = "This is a string";
cout << str[2] << endl;
// ...but by doing this instead
string *p_str = &str;
cout << /* access 3rd element of str with p_str */ << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)