有如下程序段:
1
2
3
4
5
6
7
8
9
|
int i, n = 0;
float x = 1, y1 = 2.1 / 1.9, y2 = 1.9 / 2.1;
for
( i = 1; i < 22; i++ )
x = x * y1;
while
( x != 1.0 )
{
x = x * y2; n++;
}
printf( “ %d / n ”, n );
|
请问执行结果是:
分析:浮点数的比较不可以用 = = 或者 != ,详见找工作笔试面试那些事儿(1)---C,C++基础和编程风格(2) ,会一直循环下去,选择C
拷贝构造函数的特点是()
正确答案: D 你的答案: A B C D (错误)
该函数名同类名,也是一种构造函数,该函数返回自身引用
该函数只有一个参数,必须是对某个对象的引用
每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员
拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象
拷贝函数和构造函数没有返回值,A错;
拷贝构造函数的参数可以使一个或多个,但左起第一个必须是类的引用对象,B错;
若类定义中没有声明拷贝构造函数,则编译器会自动生成一个缺省的拷贝构造函数,但是不会是该类的保护成员,C错;
通过拷贝函数可以将另一个对象作为对象的初值,D对
从构造函数说起,最简单的A a=constructor(
parameter);如果构造函数不返回任何东西,它应该写void,而类成员构造函数之所以不写,是因为它返回该类的引用。总之,他不是没返回,只是你不用写而已,A是对的。
构造函数可以有多个参数,但是复制构造函数的参数必须是实例的引用,且只有一个。B是对的。
C前面都是对的,但是默认复制构造函数可以在类或子类外使用,不是保护成员函数。
D正确不解释。
答案:BCD
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。
下列关于虚函数的说法正确的是()
正确答案: C D 你的答案: C (错误)
在构造函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效
在析构函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效
静态函数不可以是虚函数
虚函数可以声明为inline
答案:BCD
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。
答案:BCD
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。
B,因为析构函数一般声明为虚函数,以确保对象能正确的释放内存。所有在析构函数中调用虚函数,动态绑定机制可以生效
C,因为静态成员函数没有this指针,同时其函数的指针存放也不同于一般的成员函数,其无法成为一个对象的虚函数的指针以实现由此带来的动态机制。静态是编译时期就必须确定的,虚函数是运行时期确定的。
D,inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。
虚函数可以声明为inline,但是编译器会忽略inline属性。