首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新定义访问修饰符的影响是什么?

重新定义访问修饰符的影响是什么?
EN

Stack Overflow用户
提问于 2012-12-21 08:25:15
回答 3查看 139关注 0票数 3

为了引入类似C#/Java语言的语法,通过预处理命令重新定义C++访问修饰符可能会产生什么影响?

代码语言:javascript
复制
#include <iostream>

// The access modifiers are redefined here.
#define public public:
#define protected protected:
#define private private:

class Halo
{
    public Halo(int xx)
    {
        x = xx;
    }

    public int getX()
    {
        return x;
    }

    private int x;
};

int main()
{
    Halo* halo = new Halo(3);

    std::cout << halo->getX();

    return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-21 08:28:01

代码语言:javascript
复制
class B : public A {};

expected '{' before ':' token

expected unqualified-id before ':' token

expected class-name before ':' token

票数 9
EN

Stack Overflow用户

发布于 2012-12-21 08:31:14

除了已经提到的语法错误的后果之外。这样做会让其他人感到困惑。很久以前,人们会用pascal编程,然后转移到C语言,使用#define BEGIN {#define END },这导致了代码看起来有点像Pascal,但当然在许多其他方面根本不像pascal。

你正在用一种不同的语言编程。那么为什么要假装它不是呢?

我猜是因为你认为它是Java,所以你也忘了删除你的光环对象了?

票数 3
EN

Stack Overflow用户

发布于 2012-12-21 08:32:52

任何事情都可能发生,因为重新定义语言关键字是未定义的行为。

一般来说,你应该为你正在使用的语言编写惯用的代码。如果您想使用Java/C#语法,只需用这些语言编写代码即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13982623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档