我是C++编程的新手,但我有Java经验.我需要有关如何将对象传递给C++中的函数的指导.
我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对象引用的变量.
如果您还可以解释在哪里使用这些选项,那将会很棒.
我有我的功能,我在targetBubble那里填充,但它在调用此函数后没有填充,但我知道它已填充此函数,因为我有输出代码.
bool clickOnBubble(sf::Vector2i & mousePos, std::vector<Bubble *> bubbles, Bubble * targetBubble) {
targetBubble = bubbles[i];
}
Run Code Online (Sandbox Code Playgroud)
我正在传递这样的指针
Bubble * targetBubble = NULL;
clickOnBubble(mousePos, bubbles, targetBubble);
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用?谢谢
当涉及到c ++时,我很吵,返回对象的更好方法是什么?我来自脚本世界,其中对象总是引用,并且我试图实现相同的概念......我基于何时通过引用传递以及何时通过C++中的指针传递?,一个用户说:"一个好的经验法则:"当你需要时使用引用,当你需要时使用指针"."
// basic layer class
class Layer { private: Channel channel; // NEVER NULL };
// return object by pointer
Channel *Layer::getChannel() {
return &channel;
};
// return by reference
Channel& Layer::getChannel() {
return channel;
};
Run Code Online (Sandbox Code Playgroud)
第二个版本的问题是编译器将接受这一行:
Channel channel = layer.getChannel(); // creates a copy BAD
Run Code Online (Sandbox Code Playgroud)
应该是什么时候:
Channel &channel = layer.getChannel(); // reference good
Run Code Online (Sandbox Code Playgroud)
有没有办法强制第二个选项的调用者强制它不创建新的通道,或者是第一个选择更好,即使它永远不会是NULL?
I have the situation where one function calls one of several possible functions. This seems like a good place to pass a function as a parameter. In this Quoara answer by Zubkov there are three ways to do this.
int g(int x(int)) { return x(1); }
int g(int (*x)(int)) { return x(1); }
int g(int (&x)(int)) { return x(1); }
...
int f(int n) { return n*2; }
g(f); // all three g's above work the same
Run Code Online (Sandbox Code Playgroud)
When should which …
通常认为将参数作为指针而不是作为值传递时更好吗?显然它在很大程度上取决于情况,但是当有选择时,使用指针会更好吗?
这只是出于记忆的原因吗?
如果它是真的,指针或引用,最好通过什么?
可能的重复:
当C++中的pass-by-pointer更喜欢传递引用时?
在C++中通过引用传递指针是否有好处?
如何将对象传递给C++中的函数?
大家好,我正在努力开发一个大型面向对象的c ++应用程序框架,作为我的化学工程研究生研究的一部分.
我发现我的许多函数都指向自定义对象或STL对象.我发现在编写代码方面,这使得访问存储在其中的函数或变量变得更加困难.
但是,除了简单之外,通过引用传递指针是否有任何优点/缺点?
如果一个优于另一个优势,我可能会考虑重构我的代码以统一使用任何最佳方法.如果没有,我仍然可以重构为了可读性而始终使用引用传递(即不必取消引用)
我想再做出最好的决定,因为我的框架已经有40多个文件了,所以我想尽可能早地实现统一的结构,并且无论最佳方法是什么.
提前致谢!
我有两个问题:
我是对的,在4位系统上,指针是4个字节吗?
是"通过引用传递"和"通过指针传递相同的东西,只是不同的措辞?
功能原型:
1. int test (int & i);
2. int test (int * i);
Run Code Online (Sandbox Code Playgroud)
函数调用:
1. test(n);
2. test(&n);
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释尽可能多的方面的差异吗?非常感谢!