我从未遇到像Python(隐式)或PHP(显式&)那样的引用问题.在PHP中,您可以编写$p = &$myvar;并$p作为参考指向$myVar.
所以我知道在C++中你可以这样做:
void setToSomething( int& var )
{
var = 123;
}
int myInt;
setToSomething( myInt );
Run Code Online (Sandbox Code Playgroud)
不是指C++中"x的内存地址"?如果var只是地址myInt而不是指针,我该怎么办?
void setToSomething( int* var )
{
*var = 123;
}
int myInt;
int* myIntPtr = &myInt;
setToSomething( myIntPtr );
Run Code Online (Sandbox Code Playgroud)
我完全不理解*和&之间在C++中的区别.他们告诉你并且习惯于获取变量的地址,但是为什么它会帮助你处理函数等.就像在第一个例子中一样?
在我以前的应用程序中,我有一个这样的对象:
class myType
{
public:
int a;
string b;
}
Run Code Online (Sandbox Code Playgroud)
它有很多实例分散在各处,并传递给几乎所有的功能.
该应用程序很慢.分析说,95%的时间被字符串分配器功能吃掉.
我知道如何使用上面的对象,但不知道如何使用字符串指针.
class myType
{
public:
int a;
string* b;
}
Run Code Online (Sandbox Code Playgroud)
他们告诉我如上所述使用指针.
复制对象时复制的内容是什么?
如何使用带有指针的类:
访问字符串值
修改字符串值而不修改对象中的值(复制?)
如果我使用字符串指针会改变一般的东西?
c++ ×2