请教C++中对象或者变量的声明与定义有何不同?在程序的大部分地方我感觉变量的声明语句就是定义语句,虽然知道变量的声明只是告诉编译系统,并不马上分配存储空间,但很多时候仍旧疑惑声
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 17:39:19
![请教C++中对象或者变量的声明与定义有何不同?在程序的大部分地方我感觉变量的声明语句就是定义语句,虽然知道变量的声明只是告诉编译系统,并不马上分配存储空间,但很多时候仍旧疑惑声](/uploads/image/z/5928266-2-6.jpg?t=%E8%AF%B7%E6%95%99C%2B%2B%E4%B8%AD%E5%AF%B9%E8%B1%A1%E6%88%96%E8%80%85%E5%8F%98%E9%87%8F%E7%9A%84%E5%A3%B0%E6%98%8E%E4%B8%8E%E5%AE%9A%E4%B9%89%E6%9C%89%E4%BD%95%E4%B8%8D%E5%90%8C%3F%E5%9C%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%A4%A7%E9%83%A8%E5%88%86%E5%9C%B0%E6%96%B9%E6%88%91%E6%84%9F%E8%A7%89%E5%8F%98%E9%87%8F%E7%9A%84%E5%A3%B0%E6%98%8E%E8%AF%AD%E5%8F%A5%E5%B0%B1%E6%98%AF%E5%AE%9A%E4%B9%89%E8%AF%AD%E5%8F%A5%2C%E8%99%BD%E7%84%B6%E7%9F%A5%E9%81%93%E5%8F%98%E9%87%8F%E7%9A%84%E5%A3%B0%E6%98%8E%E5%8F%AA%E6%98%AF%E5%91%8A%E8%AF%89%E7%BC%96%E8%AF%91%E7%B3%BB%E7%BB%9F%2C%E5%B9%B6%E4%B8%8D%E9%A9%AC%E4%B8%8A%E5%88%86%E9%85%8D%E5%AD%98%E5%82%A8%E7%A9%BA%E9%97%B4%2C%E4%BD%86%E5%BE%88%E5%A4%9A%E6%97%B6%E5%80%99%E4%BB%8D%E6%97%A7%E7%96%91%E6%83%91%E5%A3%B0)
请教C++中对象或者变量的声明与定义有何不同?在程序的大部分地方我感觉变量的声明语句就是定义语句,虽然知道变量的声明只是告诉编译系统,并不马上分配存储空间,但很多时候仍旧疑惑声
请教C++中对象或者变量的声明与定义有何不同?
在程序的大部分地方我感觉变量的声明语句就是定义语句,虽然知道变量的声明只是告诉编译系统,并不马上分配存储空间,但很多时候仍旧疑惑声明和定义的区别,
对函数的声明和定义,可以很容易区分,但是变量或者对象的声明和定义怎么区分:如
f1.cpp文件:
int a=2;
int main()
{ int b,c=0;
b=c;
f();
return 0;
}
.
f2.cpp文件:
extern int a;
void f()
{ int dd;
dd=8;
}
在上述程序中,两个文件中的全局变量a,其中f1.cpp中的a在声明的同时并定义同时被初始化为2,但f2.cpp中的a只是一个声明,并没有定义(分配存储空间),在这里声明和定义区分的很明显,但f2.cpp中的dd变量,应该是声明的同时也被定义了,好象声明和定义区分的不明显.请教是不是对于auto类型的变量是不是声明和定义都在一起啊?
请教C++中对象或者变量的声明与定义有何不同?在程序的大部分地方我感觉变量的声明语句就是定义语句,虽然知道变量的声明只是告诉编译系统,并不马上分配存储空间,但很多时候仍旧疑惑声
基本类型变量是声明和定义(初始化)是同时产生的
也就是说int a;那么同时对a进行声明和初始化
而对象,是声明与定义分开的
如类A
如果A x;就是一个声明,告诉编译器x是一个A类的对象变量,但是不进行初始化
如果以后,x= new A(); 这就是初始化,分配了空间
同样,A x=new A();这也是声明的同时初始化
还有对于函数(方法):声明只是写出函数的特性(类型 名称 参数),并没有实际的内容,是告诉编译器有这样的一个函数,在定义的时候把函数全部写清楚
已经说了,基本类型变量是声明和定义(初始化)是同时产生的,你的extern int a; 如果是直接这么写的那么就是直接定义和声明,如果是从别的地方extern来得,那么这句话就和声明和定义无关,这样的情况只是说把a扩展成全局来使用,就是实现这个功能,不会重新定义a