1.print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()
void print() const;知识点:
- 宏会带来性能的缺失
- 宏不进行类型检查
- 宏可以做到函数无法做到的功能
- 编译时宏的处理早于函数
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
4.查看下面两段代码
(1)
class classA {...};
class classB
{
public:
classB(classA a) {mA = a;}
private:
classA mA;
};
(2)
class classA {...};
class classB
{
public:
classB(classA a): mA(a) {}
private:
classA mA;
};A.两种方法产生的结果和效率完全相同
B.通常情况下(2)的效率更高
C.通常情况下(1)的效率更高
D.两种调用方法会产生不同的结果
-
一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。
-
单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。
- 考虑到第7位可能的四舍五入问题,所以单精度最少有6位有效数字(最小尺寸)。
解析:以Y轴为对称轴的反射图形
B.从派生类继承的子类里可以访问基类的protected成员
C.派生类可以定义一个同名的非protected成员
D.派生类可以访问基类对象的protected成员
protected Members
The protected access label can be thought of as a blend of private and public :
Like private members, protected members are inaccessible to users of the class.
Like public members, the protected members are accessible to classes derived from this class.
In addition, protected has another important property:
A derived object may access the protected members of its base class only through a derived
object. The derived class has no special access to the protected members of base type objects.
基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。
派生类对象如果要访问基类protected成员只有通过派生类对象,派生类不能访问基类对象的protected成员。
请注意 drived class和drived object:派生类和派生类对象。第一点和第二点都是针对派生类来说的。
对于第三点总结一句话:只有在派生类中才可以通过派生类对象访问基类的protected成员。
B.如果基类没有定义析构函数,则只调用派生类的析构函数
C.先调用派生类的析构函数,后调用基类的析构函数
D.先调用基类的析构函数,后调用派生类的析构函数
B.vector
D.set
·····关联容器
map是一种关联容器,该容器用唯一的关键字来映射相应的值,即具有key-value功能。
set也是一种关联性容器,它同map一样,底层使用红黑树实现,插入删除操作时仅仅移动指针即可,不涉及内存的移动和拷贝,所以效率比较高。
·····容器适配器
queue是一个队列,实现先进先出功能,queue不是标准的STL容器,却以标准的STL容器为基础。queue是在deque的基础上封装的。
stack是实现先进后出的功能,和queue一样,也是内部封装了deque,这也是为啥称为容器适配器的原因吧(纯属猜测)
10.一个栈的入栈序列是A、B、C、D、E,则栈的不可能输出序列是:(A)
a. DCEAB
b. ABCDE
c. EDCBA
d. DECBA
选项2是abcd先依次入栈,然后d出栈,e再入栈,e出栈 a入栈,然后a出栈;b再入栈,b出栈。。。。。。依此类推
选项3是abcde入栈,然后依次出栈
选项4是abcd先依次入栈,d出栈,e入栈,再依次出栈
A.用一个对象去初始化同一个类的另一个新对象时
B.将类的一个对象赋值给该类的另一个对象时
C.函数的形参对象,调用函数进行形参和实参结合时
D.函数的返回值是类的对象,函数执行返回调用时
解析:
12.假设下面的函数foo会被多线程调用,那么让i、j、k三个变量哪些因为线程间共享访问需要加锁保护.(i,j)
int i = 0;
void foo()
{
static int j = 0;
int k = 0;
i++; j++; k++;
}
解析:
B.队列
C.栈
D.关联数组
E空字符串数组
F.双向链表
14.如下C程序,在64位处理器上运行后sz的值是什么?(16)
struct st
{
int *p;
int i;
char a;
};
int sz=sizeof(struct st);
考点:
2.不同的数据类型在32位和64位下所占字节的区别
32位编译器:
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
此处指针先占用8字节。int占用4字节,满足要求不用补齐,char占用一个字节,同时总的字节数必须满足8的倍数即16
B.该类的静态方法只能访问该类的静态成员函数
C.该类的静态数据成员变量的值不可修改
D.子类可以访问父类的静态成员
E.静态成员无多态特性
静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,
静态成员可以被任一对象修改,修改后的值可以被所有对象共享。
B.gets
C.getchar
D.pread
E.getline
F.scanf
解析:
这篇博客探讨了C++中的print()常成员函数特性,强调了宏的局限性。同时,文章深入介绍了单精度浮点数的存储结构,指出其有效位数为7位。接着,讨论了关联容器如map和set的特性和效率,并提及容器适配器queue和stack基于deque实现的先进先出和先进后出原理。最后,给出了栈的入栈和出栈序列的理论分析。
793

被折叠的 条评论
为什么被折叠?



