在同一个作用域内,对象或者变量是不能重复定义的,就如你main函数中的a和b。
但是在不同的作用域,或者是嵌套的子作用域内是可以重复定义的。
如
int main()
{
A a;
if()
{
A a; //此处处于if的局部作用域中, 可以覆盖前面的a对象定义
}
}
总之,在不同的作用域就可以重复定义,同一个作用域是不能重名的,无论是对象名称还是类型名称都不行。
定义一般属于占内存行为,在同一个作用域中变量不能重复定义,但可以重复声明!
通俗理由其实比较简单;假设,你说的将你那个定义的b也可以改成a允许,那么,如果在【cout<
少年在c/c++ 中讲究的是先声明后使用!每个变量都是有作用范围的!在一个作用范围内不能出现重复的变量名!这个你想想也知道!如果在一个范围类出现了同名变量机器怎么识别你以后用的时候用的是哪个变量!另外你说有些东西可以重复定义那应该是不在一个作用域内的!
只有不同作用范围的变量可以重复定义,例如全局变量和局部变量可以重名。
#include
using namespace std;
class A
{
public:
int get()const{return i;}
void set(int x){i=x;cout<<"this变量保存的内存:\t"<
int i;
};
int main()
{
{
A b;
b.set(9);
cout<<"对象b的内存地址:\t"<<&b<
A b;
b.set(9);
cout<<"对象b的内存地址:\t"<<&b<
}