不能在函数内宣言却不定义类
不能在函数内声明却不定义类
如下代码会报错说“.....使用未定义的 class......”
为什么允许在函数中声明但不定义函数,却不允许在函数中声明类呢?
这个问题也许和:“允许在函数中定义类,却不允许在函数中定义函数。”差不多。
为什么会这样设计C++?C++关于这一现象的说法是怎样的?
------解决方案--------------------
int main()
{
class Car;
}
这样不报错。但我不知道在函数内光声明类有何用?这样也似乎屏蔽了全局的类名。
------解决方案--------------------
这是一个防止命名冲突的机制,如果在语块内部出现了语块外部定义过的名字,就会在该语块执行时隐藏外部名字。否则,会因为在一个程序中起n多不同的名字而让程序员苦恼。
------解决方案--------------------
楼主你认为这个有错吗?
------解决方案--------------------
不允许在函数中定义函数是为了不让C++的世界变得更加混乱吧。
------解决方案--------------------
声明类就会屏蔽全局的类名。但是声明函数不会屏蔽全局的函数。
后半句谁说的?
------解决方案--------------------
只是被函数内的类屏蔽了而已,如果函数内的类也有符合的构造函数就不会报错了
------解决方案--------------------
不会把,应该不可以在函数体内声明一个类吧。
如下代码会报错说“.....使用未定义的 class......”
class Car
{
public:
Car(int i){a=i;}
int a;
};
int func(int i)
{
return 0;
}
int main()
{
class Car;
func(1);
Car c1(1);
}
为什么允许在函数中声明但不定义函数,却不允许在函数中声明类呢?
这个问题也许和:“允许在函数中定义类,却不允许在函数中定义函数。”差不多。
为什么会这样设计C++?C++关于这一现象的说法是怎样的?
------解决方案--------------------
int main()
{
class Car;
}
这样不报错。但我不知道在函数内光声明类有何用?这样也似乎屏蔽了全局的类名。
------解决方案--------------------
这是一个防止命名冲突的机制,如果在语块内部出现了语块外部定义过的名字,就会在该语块执行时隐藏外部名字。否则,会因为在一个程序中起n多不同的名字而让程序员苦恼。
------解决方案--------------------
int main()
{
class Car{};
Car car;
return 0;
}
楼主你认为这个有错吗?
------解决方案--------------------
不允许在函数中定义函数是为了不让C++的世界变得更加混乱吧。
------解决方案--------------------
声明类就会屏蔽全局的类名。但是声明函数不会屏蔽全局的函数。
后半句谁说的?
------解决方案--------------------
只是被函数内的类屏蔽了而已,如果函数内的类也有符合的构造函数就不会报错了
------解决方案--------------------
不会把,应该不可以在函数体内声明一个类吧。