我读了斯基特书的第2.3.2节,据我理解,在C#中没有真正的引用,就像在C++中那样。
有趣的是,不仅是神话中的“通过引用”的部分,而且“对象被传递”也是如此。无论是引用还是值,对象本身都不会被传递。当涉及引用类型时,变量通过引用传递,或者参数(引用)的值通过值传递。
看,这与C++不同(我来自C++背景),因为在C++中,您可以使用符号直接使用参数列表中的对象--没有任何副本,甚至没有对象的内存地址的副本:
bool isEven ( int & i ) { return i % 2 == 0 } )
int main ()
{
int x = 5;
st
我正在编写一个perl脚本,首先打开目录(目录中有多个文件),第二次读取目录中的文件,然后逐行将单词放入数组并将这些单词作为参数发送给c++程序。我试着写这个脚本,但是在处理文件时遇到了问题,它打开了目录,但是我无法访问这些文件,
对于这种问题,应该有不止一个答案,我的脚本是:
my $directory = '.';
my @connection;
opendir (DIR, $directory) or die $!;
while (my $file = readdir(DIR)) {
next if ($file =~ m/^\./);
以下代码在C++中是如何工作的?这合乎逻辑吗?
const int &ref = 9;
const int &another_ref = ref + 6;
为什么C++允许常量引用进行文字初始化,而非常数引用不允许这样做?例如:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
这可以通过以下事实来解释:非常数引用可以用来更改它所引用的变量的值。因此,C++不允许非常数引用常量变量。
这可能是一种可能的解释吗?C++不允许
免责声明: Java学习C++。
当您返回一个保存在已删除动态对象中的字符串时,会发生什么情况?
下面是一个相当标准的去队列方法,我想让它正常工作,而不使用模板数据的指针,这是我测试用例中的一个字符串。
Ubuntu13.04上的g++给了我分段故障。在最新的OSX上,我的数据被破坏了。
是我的代码还是C++?
// remove an object from the front of the queue.
// the test case instantiate T as string.
// front->data is assigned an static string.
tem
对于C++中的闭包是什么,我一直很困惑。我读过这个,但是几乎所有的答案都提到了JavaScript,但是我认为C++和JavaScript之间的闭包有一些不同。因此,我发现很难将JavaScript描述的闭包与C++匹配。
例如,几乎所有的答案都以返回函数的函数为例,在JavaScript中演示闭包。但我在C++中找不到类似的模式。
更重要的是,在JavaScript中没有所谓的“捕获列表”。
I被告知,如果一个函数使用非局部变量(来自外部范围或全局范围),那么它就是一个闭包。对吗?
示例1:
int a = 3;
int am_I_a_closure(int c){
我是c++中的指针和引用的新手,所以我想知道是否有人可以给我一个例子,告诉我如何写一个返回字符串引用的函数,以及可能正在使用的函数。例如,如果我想要编写一个函数,比如...
//returns a refrence to a string
string& returnRefrence(){
string hello = "Hello there";
string * helloRefrence = &hello;
return *helloRefrence;
}
//and if i wanted to use to that f
我正在使用所列的C++书籍学习。我的问题是,变量和对象之间有区别吗?请考虑以下示例:
int i = 0; //i is an object of type int. Or we can say i is a variable of type int
int &refI = i; //refI is a "reference variable" of "reference type `int&`. But here refI is not an object.
我目前的理解是,变量和对象这两个术语在很大程度上是重叠的。但是,在某些情况下,比如上面提到的
在C++中,为什么允许我这样做:
const int& x = 2;
但不是:
int& y = 2;
?
后者给出了编译器错误:invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’.
我是一名C++程序员,现在正在从事一个C#项目。
我试图在下面的代码片段中理解为什么字符串的值不会改变,即使函数改变了它的值,我认为它是一个对象,并将作为引用传递。
public class TestClass
{
public TestClass(String passedStr)
{
passedStr = "Change me";
}
}
class Program
{
static void Main(string[] args)
{
我很难理解Java中的引用类型。因此,在C++中,如果我们想动态地分配某个一维数组或单个对象,我们所做的就是:
int *a = new int();
int *a = new int[];
但是,在Java指针中,不能让编程人员获得引用,引用是作为某种类型的指针引入的,但对于它们所持有的值(point?)却不可能进行有价证券操作。
据我所知,Java中的每个非原始数据类型都是引用类型:
String obj; //reference
obj = new String();
如果想要分配一些东西,我们必须在堆上分配它,而obj会将对象的入口保存在堆上。因此,在C++中,这就像:
String