这些签名之间有什么区别?
T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);
void f(T * identifier);
void f(T & identifier);
void f(T identifier);
I met pointers in c, but the amperstand in function signature is new for me. Can Anyone explain this?
我正在尝试理解传递指针引用的不同方式。一种实现涉及传递指针引用,另一种涉及传递指针。
我试图理解在C++中"*&“是如何在后者中被解析的。
假设我想更改指针P所指向的内容。我可以传递指针,也可以传递对指针的引用。如果我传递一个对指针的引用,我的实现将如下所示
void changePointer(int ** pp){
//stuff that changes P from main();
}
//...
int main(){
int a = 7;
int * P = &a;
changePointer(&P);
我的程序崩溃了,我很难理解它崩溃的原因。主要的问题是wxwidgets文档说引用计数用于wxImage对象。这到底是什么意思?为什么这段代码会使它崩溃?
wxImage* t = m_default_image; //m_default_image is a pointer pointing to a valid wxImage object.
wxDELETE(m_default_image);
if(t->IsOk())
{
wxLogMessage("reference counting works!");
}
崩溃的代码行是t->IsOK()。引用
引用与原始变量具有相同的地址,那么它们为什么要消耗内存。如果我作为类成员引用了类的大小,请参考本例中的。
编辑1
这是我在VS 2010 Express上获得的输出
该方案:
class X
{
int i;
int &I;
public:
X():I(i){}
}x;
class Y
{
int i;
public:
Y(){}
}y;
int main()
{
int j =0;
int &J = j;
return 0;
}
观察窗:
拆卸:
int main()
{
01101390 push
我在创建托管指针数组时遇到了问题。
我试过了
public unsafe class Car
{
public int speed;
public Car()
{
speed = 0;
}
public Car(int speed)
{
this.speed = speed;
}
}
class Program
{
public static unsafe void Main(string[] args)
{
var arr = new Car[10]; // 1st
在C中,我认为没有引用,因此返回值可以是指针,也可以是数据类型本身。如果是局部变量,则返回指针没有任何意义。如果动态分配变量,则只能返回指针。
然而,在C++中,有一个新的选择,即参考。如果我想返回的是一个局部变量,我认为我只能选择返回本身,因为在函数返回之后,其他两个变量没有什么可引用或指向的。如果我动态地分配一个变量,我会返回什么?指针还是参考?优点和缺点是什么?为什么不直接返回变量呢?
一个非常简单的例子:
class TreeNode
{
//......May be some elements and functions.
}
TreeNode& test()
{
Tr
下面是一个Node类,其运算符=重载(仅显示自赋值位)。
Node& operator=(const Node &other) {
if ( this != &other) {
// do stuff
}
}
我的问题是,为什么我需要显式地键入"&other",是不是"other“已经是对Node对象的引用了?同样,当我取消引用"this“并进行比较时,如下所示:
if ( *this!= other )
它还是会出错的。是因为这是指向Node对象的const指针