嵌入式笔试选择题总结
Posted Jocelin47
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式笔试选择题总结相关的知识,希望对你有一定的参考价值。
C++部分
1、默认的无参构造函数
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct X{
X(){ cout << "A";}
X(int x){ cout << x << "B";}
};
int main(){
X a();
X x(4);
return 0;
}
执行X a();这句话的时候并不会进入函数体,不会打印。
执行下面4赋值的时候才会进入到函数体内
2、属于函数指针的是
(int*) func(int,int)
int *func(int,int)
这两个都不是
int (*func)(int,int) //这才是
3、char截断int类型
int a =320;
char *ptr;
ptr = (char*)&a;
cout << *ptr << endl;
结果为64
320的二进制为101000000
截断后8位为:1000000 = 64
4、析构函数中不要抛出异常
https://www.cnblogs.com/zhyg6516/archive/2011/03/08/1977007.html
5、多重继承下,不同基类指针指向同一子类对象的地址
#include <iostream>
using namespace std;
class ClassA
{
public:
virtual ~ ClassA(){};
};
class ClassB
{
public:
virtual ~ ClassB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
int main(){
ClassC* pC = new ClassC();
ClassA* pA=pC;
ClassB* pB=pC;
printf("%d\\n", pA);
printf("%d\\n", pB);
printf("%d\\n", pC);
return 0;
}
结果显示 A和C的地址相同
18410528
18410536
18410528
6、C++左右值引用判断
#include <iostream>
#include <cstdio>
#include <cstring>
#include <typeinfo>
#include <vector>
#include <type_traits>
#include <string>
using namespace std;
string retunfunc()
{
string name{ "test" };
return (name);
}
int main()
{
int a = 10;
decltype((a)) b = a;
cout << is_lvalue_reference<decltype(true ? a: a)>::value << endl;
cout << is_lvalue_reference<decltype(a)>::value << endl;
cout << is_lvalue_reference<decltype(a++)>::value <<endl;
cout << is_lvalue_reference<decltype(++a)>::value <<endl;
cout << is_lvalue_reference<decltype(retunfunc())>::value<< endl;
cout << is_lvalue_reference<decltype(move(retunfunc()))>::value << endl;
string name(move(retunfunc()));
cout << name.length() << endl;
return 0;
}
结果:
1
0
0
1
0
0
4
is_lvalue_reference
7、 右值引用的转发
template<typename T>
void print(T&& v)
{}
如果传入一个string & ,v会被推导成什么类型?
string &&
string &
string
string*
考察转发右值引用吗?答案不确定猜是string
以上是关于嵌入式笔试选择题总结的主要内容,如果未能解决你的问题,请参考以下文章