为什么我的 BaseClass:Method 代码编译(带有单冒号)?
Why does my BaseClass:Method code compile (with single colon)?
我遇到了以下代码,该代码吐出了一个分段错误。然后我意识到我输入了 Base:hello(( 而不是 Base::hello,但令我惊讶的是,单冒号代码会编译。Base:hello(( 如何成为有效的表达式?
class Base {
public:
virtual void hello() {
cout << "Hello" << endl;
}
};
class Derived : public Base {
public:
void hello() override {
Base:hello(); // why does this compile?
}
};
Base:
被解析为标签,可以用作goto
语句的目标。因此,这相当于只是调用hello()
,当然,这将为您提供无限递归和堆栈溢出。
相关文章:
- 二叉排序树无法编译
- 编译时未启用intel oneApi CUDA支持
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 为什么 std:set(带有单个冒号)可以编译?
- Clang vs GCC:枚举用法中的单冒号
- 麻烦编译可单击的Qlabel
- 单冒号是什么意思 c++ 函数接口
- 如何正确编译和运行Windows表单应用程序
- 如何基于文本文件创建或修改QT表单(编译后)
- 为什么这个单例实现无法编译?
- 我可以在编译期间从 gcc 获取单例的地址或链接时吗?
- 将单声道编译为静态库
- 扩展具有私有构造函数和析构函数的单例类会给出编译时警告
- 编译一个Qt单文件从命令行:未定义的引用到虚表
- 如何在c++11和c++98的共享库创建中使用cmake 2.8.2进行单次构建时每次重新编译源文件
- 尝试在 c++ 中编译单例时出现编译错误
- 编译在在线 HTML 表单上提交的代码并使用 GCC 进行处理的过程
- 设计模式——在c++中,当实现(一组单例)直接从它们的编译单元在某个注册表中自注册时,它被称为什么?