1.print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()
void print() const;知识点:
常成员函数的说明格式如下:
类型说明符 函数名(参数表)const;
2.下列对于宏的描述,不正确的是:(A)
- 宏会带来性能的缺失
- 宏不进行类型检查
- 宏可以做到函数无法做到的功能
- 编译时宏的处理早于函数
3.const char*, char const*, char*const的区别问题
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。
事实上这个概念谁都有只是三种声明方式非常相似很容易记混。
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
const
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
4.查看下面两段代码
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.两种调用方法会产生不同的结果
解析:第一种先调用 a的默认构造函数,再调用operator=赋值函数
第二种直接调用复制构造函数(拷贝构造函数)
关于拷贝构造函数: C++拷贝构造函数详解