关于在C++中使用构造函数,这是一个非常简单的问题.我将以面试对话的形式呈现(很难以任何其他形式呈现)
面试官 -什么是构造函数?
me -构造函数是特殊函数,它确保在使用之前初始化所有对象.
面试官 -什么是初始化者列表?
我 -这是一个所有初始化发生的列表.只有在初始化了所有数据成员或者调用了所有成员对象的某些构造函数后,才会输入构造函数的主体.
访问者 -这意味着初始化在初始化列表中执行,而不是在构造函数内部.但是你说构造函数初始化了对象!不是吗?你想回答我的第一个问题吗?
我 -我认为构造函数执行赋值,它在已初始化的成员对象上调用赋值运算符.
所以我的问题可以是你
初始化列表如何工作?
函数的起始地址和起始大括号[{]之间有什么关系?
或者只是回答我如何说服我的面试官.
int g() {
cout << "In function g()" << endl;
return 0;
}
class X {
public:
static int g() {
cout << "In static member function X::g()" << endl;
return 1;
}
};
class Y: public X {
public:
static int i;
};
int Y::i = g();
Run Code Online (Sandbox Code Playgroud)
最初我认为,当符号解析从最内部范围到最外部范围发生时,这就是为什么要调用x :: g().
但后来我密切注意到了这段代码
int Y::i = g();
Run Code Online (Sandbox Code Playgroud)
如何在没有名称范围的情况下访问X :: g()?
这个陈述所在的范围应该是全局的,而不是Y ::或X ::,所以符号解析应该给出函数g()的全局版本?
程序计数器 (PC) 具有当前正在执行的指令或行中的下一条指令的地址。对于 ARMV5,它是前一种情况。
我遇到过 PC (R15) 值为零的崩溃。我想知道是否有人可以告诉我它的重要性。是否有某种方法(其他一些寄存器)可以找出当前指令的地址。
任何帮助将不胜感激。
我想知道是否有一些理论/工具可用于将包含函数调用的代码替换为代码,其中所有函数调用已被其各自的代码替换.
喜欢
main()
{
fun();
}
fun()
{
int i;
fun2();
}
fun2()
{
int j;
}
Run Code Online (Sandbox Code Playgroud)
成
main()
{
int i;
int j;
}
Run Code Online (Sandbox Code Playgroud)
我知道有很多需要注意的事情,比如局部变量名,递归调用,外部函数调用等等.. ..
我也知道它可能根本不是很有用,但仍然存在这样的事情吗?甚至在理论上?
我应该称它为每个处理器单位提前:)