相关疑难解决方法(0)

变量,对象和引用之间有什么区别?

变量,对象引用之间究竟有什么区别?

例如:它们都指向某种类型,并且它们都必须保存值(当然除非您具有临时的无效类型),但它们的功能和实现究竟如何彼此不同?

例:

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# java variables reference object

69
推荐指数
4
解决办法
3万
查看次数

参数名称省略,C++ vs C.

在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 c++ compilation

39
推荐指数
3
解决办法
2万
查看次数

后续:C++ 14/C++ 17中的变量究竟是什么?

正如标题所暗示的那样,之前已经提出了这个问题.但是,答案与C++ 03/0x(11)有关.C++ 11(N3337)对变量说了这个:

[基础]/6:

变量是由比非静态数据成员或对象的其他的基准的声明引入.变量的名称表示引用或对象.

这可能意味着变量本质上是命名对象/引用.

但是,在C++ 14/C++ 17中,最后一句改为

变量的名称(如果有)表示引用或对象.

这意味着一个变量并没有必然有一个名字.

对第一句的不同解释可以表明变量名称,因为表示对象/引用的名称也由这些实体的声明引入.但第二句与"变量名"这一概念相矛盾.那么,变量现在只是对象引用的上位词,无论是否命名?

c++ standards language-lawyer c++14

9
推荐指数
1
解决办法
341
查看次数

标签 统计

c++ ×2

c ×1

c# ×1

c++14 ×1

compilation ×1

java ×1

language-lawyer ×1

object ×1

reference ×1

standards ×1

variables ×1