我不确定标题是否适合我的问题,但我想不出更好的。
由于我正在运行 Arch Linux,但正在开发必须在 Debian 和 Ubuntu 上运行的软件(在 C++ 中),我目前正在进行以下设置。我有neovim(因为我真的很喜欢它)和YouCompleteMe,这个设置可以在Docker(运行Debian)中运行ycm-server。
现在我想给coc.nvmim一起clangd或CCLS,因为它似乎会比搜索更好的用户体验一试YouCompleteMe。我现在想知道是否可以在服务器上运行clangd或ccl并让coc.nvmim 毫无问题地连接到它。不幸的是,我在 Google 上找不到任何东西,因此我在询问 StackOverflow 社区。
我对C++考试中的问题有疑问.我和一位助教有很多争执,我想知道,如果我错过了什么.
给出以下代码:
class Student {
public:
virtual void checkFinanes() {
std::cout << "I have no money. \n";
}
};
class ExonomyStudent : public Student {
public:
virtual void checkFinances() {
std::cout << "I am making a lot of money.\n";
}
};
Run Code Online (Sandbox Code Playgroud)
问题是:
以下代码是否编译?如果是这样,当我需要时,控制台上的输出是什么.如果没有,为什么不呢?
Student student;
student.checkFinances();
EconomyStudent* economyStudent = &student;
economyStudent->checkFinances();
Run Code Online (Sandbox Code Playgroud)
答案应该是:
不编译.无法使用学生rvalue初始化EconomyStudent*.
我知道并理解,不能初始化指向子类的指针和baseclase对象的地址,并且这不能编译.我不明白的是右值.声明rvalue以使答案有效是否真的很重要?我的助教坚持但我不这么认为.你怎么看?