在这个关于bool和1的问题的评论中帮助解决正在进行的辩论:
符合标准的C++预处理器是否允许#define用户重新定义语言关键字?如果是这样,符合标准的C++预处理器是否允许这样做?
如果C++程序重新定义了一个语言关键字,那么该程序本身是否符合标准?
在代码片段中,我能够访问类范围之外的私有成员变量.虽然不应该这样做,为什么在这种情况下允许?通过引用接收返回的私有变量是不好的做法?
#include <iostream>
#include <cstdlib>
class foo
{
int x;
public:
foo(int a):x(a){}
int methodOne() { return x; }
int& methodTwo() { return x; }
};
int main()
{
foo obj(10);
int& x = obj.methodTwo();
x = 20; // With this statement, modifying the state of obj::x
std::cout << obj.methodOne();
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
关于这种方法,返回类型传达了什么?而且我什么时候应该有这种类型的返回类型?
int& methodTwo() { return x; }
Run Code Online (Sandbox Code Playgroud)
PS:如果主题行含糊不清,我很抱歉.有人可以将其更改为与此处相关的内容.谢谢.
我只是想知道boost如何实现BOOST_TYPEOF(在C++ 03中),这似乎是一个非常有用的工具.任何人有任何想法?
另外,我想C++ 03本身也有提供typeof运营商,尤其是当它已经具有sizeof(expr)其必须要知道类型的expr同时,否则怎么回事能告诉我们的大小,不知道类型?难道真的有可能知道大小,而不知道表达式的类型?
如果它不知道类型,那么编译器告诉我们什么(如果不是类型)的大小?我的意思是,对编译器(以及人类)也没有意义!sizeof(unknowntype)