我对将函数指针赋给变量的正确语法有点困惑.如果我有一个函数foo
int foo();
Run Code Online (Sandbox Code Playgroud)
我正在将指向foo的指针分配给变量栏
void * bar;
Run Code Online (Sandbox Code Playgroud)
如果我使用它似乎并不重要
bar = foo;
// or
bar = &foo;
Run Code Online (Sandbox Code Playgroud)
在我看来,其中只有一个应该是正确的还是我错过了什么?
我有一个大小为20的矢量和一个大小为5的矢量.我希望用第二个矢量替换第一个矢量中的元素11-15.我可以通过从第一个向量中删除这些元素并插入第二个向量来实现.有没有其他方法可以做到这一点,也许是通过使用assign?
我正在尝试理解POD类型以及如何在堆栈上分配和初始化它们.特定
class A {
public:
A();
int x;
};
class B {
public:
int x;
};
int func()
{
A a;
B b;
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地说b是在a之后分配但在a之前初始化?我的意思是,空间是按照它们被声明的顺序分配给a和b但是在分配空间时初始化b并且在声明它时初始化a?
我阅读了一篇关于POD和聚合的非常好的常见问题解答 什么是聚合和POD以及它们如何/为什么特殊?
他说的一件事是:非POD类类型的对象的生命周期在构造函数完成时开始,在析构函数完成时结束.对于POD类,生命周期在对象的存储被占用时开始,并在该存储被释放或重用时结束.
所以我正在尝试了解POD如何分配和初始化的细节,以及它与非POD的不同之处.
我正在进行在线C语言测试(不是为了工作,仅仅是为了我自己)并且我继续使用哈希符号运行这种类型的问题.我假设它不是拼写错误,我不熟悉哈希符号的使用.
#include <stdio.h>
int* func()
{
int num = 10;
return #
}
int main()
{
int *ptr = func();
printf("%d\n", *ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面C代码的输出是什么?
答案是它是一个运行时错误,解释是
函数中定义的变量将在堆栈段中分配,该函数将在函数返回时删除.因此,访问这些变量的地址会导致分段错误.
我有这个简单的课程
class foo {
public:
void func() const;
void func2();
};
void foo::func() const {}
void foo::func2() {}
int main() {
const foo f;
f.func();
f.func2();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我收到此消息:
错误:将'const foo'作为'void foo :: func2()的'this'参数传递'丢弃限定符[-fpermissive]
我理解使用const对象的非const成员,我的问题是'this'指针如何用作func2的参数?