变量,对象和引用之间究竟有什么区别?
例如:它们都指向某种类型,并且它们都必须保存值(当然除非您具有临时的无效类型),但它们的功能和实现究竟如何彼此不同?
例:
Dog myDog = new Dog(); //variable myDog that holds a reference to object Dog
int x = 12; //variable x that hold a value of 12
Run Code Online (Sandbox Code Playgroud)
它们有相同的概念,但它们有何不同?
在C++中,我倾向于在某些情况下省略参数的名称.但是在C中,当我省略参数的名字时出错了.
这是代码:
void foo(int); //forward-decl, it's OK to omit the parameter's name, in both C++ and C
int main()
{
foo(0);
return 0;
}
void foo(int) //definition in C, it cannot compile with gcc
{
printf("in foo\n");
}
void foo(int) //definition in C++, it can compile with g++
{
cout << "in foo" << endl;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?我不能省略C函数定义中的参数名称吗?
正如标题所暗示的那样,之前已经提出了这个问题.但是,答案与C++ 03/0x(11)有关.C++ 11(N3337)对变量说了这个:
甲变量是由比非静态数据成员或对象的其他的基准的声明引入.变量的名称表示引用或对象.
这可能意味着变量本质上是命名对象/引用.
变量的名称(如果有)表示引用或对象.
这意味着一个变量并没有必然有一个名字.
对第一句的不同解释可以表明变量是名称,因为表示对象/引用的名称也由这些实体的声明引入.但第二句与"变量名"这一概念相矛盾.那么,变量现在只是对象和引用的上位词,无论是否命名?