在c++中定义变量
Define variables in c++
我总是对"定义变量"这个概念感到困惑。定义是什么意思?
例如:
void main {
map<int,int> *infoMap;
if() {
//some check here,if it passes this check, then new infoMap
}
infoMap = new infoMap;
}
也是
map<int,int> *infoMap;
或
map<int,int> *infoMap = new inforMap;
定义变量?
最上面的一个是声明,或者如果您喜欢的话,是definition。在这里,编译器为变量分配空间。
底部是赋值。在这里,编译器填充它在定义时分配的空间。如果要将变量的值更改为其他值,则可以有多个赋值。
这里有一个随机的、不完整的说明:
class Foo; // (incomplete forward) class declaration
class Foo { // class definition
int a; // member declaration + definition
int b(int, int); // member function declaration
static int c; // static member declaration
};
int Foo::b(int a, int b) { return a+b; } // member function definition
int Foo::c; // static member defintion
int bar(int); // free function declaration
int main() { // free function declaration + definition
int q; // declaration + definition
q = bar(0);
return q;
}
int bar(int a) { return 2 * a; } // free function definition
也许"静态成员定义"是唯一的,因为它为在其他地方声明的对象提供了一个实际的对象实例(即分配加构造(。这只能与纯外部声明相比较:
extern int N; // declaration only, no definition
不要与具有外部可见性的声明+定义混淆:
extern const int M = 11; // declaration and definition
map<int,int> *infoMap;
infoMap
是声明。通常,当在声明的同时进行初始化时,称为定义变量。
在C++中定义某个东西就是将标识符(在本例中是指向map<int, int>
的指针(绑定到某个存储,而不是仅将标识符绑定到类型而不分配存储的声明。如果编译器不需要任何关于类型定义的信息(即只需要类型(,那么只需声明即可。否则你需要一个定义。
With变量define和declare往往可以互换使用。然而,有一个微妙的区别。
在大多数情况下,您实际上是在定义变量。
map<int,int> *infoMap;
术语"define"声明了一个符号,并赋予它实质、变量存储空间、结构/类主体、函数实现。
在某些情况下,您可以使用extern
关键字"声明"变量。这基本上通知编译器符号名称及其类型的存在,但不为其分配空间。空间被分配到实际定义变量的其他地方。
// foo.c
extern int bar;
// bar.c
int bar;
当你在c++中声明一个变量时,你在内存中为它保留了空间,但内存没有被写入。这个声明发生在中
map<int,int> *infoMap;
它可以包含任何东西。当您定义变量时,您实际上将其设置为某个值,在本例中是一个新的infoMap。
相关文章:
- 用C++中的一个变量定义一个常量
- 变量定义到C++布尔值转换
- 未声明的标识符错误,但变量定义正确 (?)
- C++多线程程序:变量定义为类成员的隔离错误
- 将变量定义为静态时,为什么可以多次定义它
- 初始值设定项列表与构造函数赋值与变量定义
- 如何根据传递给函数的变量定义特征矩阵大小
- C++ 描述如何使用来简化变量定义
- 如何转发声明依赖于变量定义的类,而变体定义又依赖于模板化类?
- 是否修改其声明语句中的变量定义良好
- 使用类的其他成员变量定义类的成员变量数组
- 是否可以通过全局变量定义具有可变参数数的函数中的参数数量
- 元组 std::get() 不适用于变量定义的常量
- 全局使用变量定义和C 声明
- C++变量定义中的易失性类型量词位置
- 将变量定义为数组和正确的语法
- 多个,包括具有变量定义的头文件
- 调用构造函数,并将成员作为参数解析为变量定义
- 逗号分隔变量定义中关系前的序列
- 如何使用命名变量定义常量右值引用参数的默认值