程序员面试宝典 10- 面向对象

来源:互联网 发布:完美假期周晨曦淘宝店 编辑:程序博客网 时间:2024/06/06 17:25

1.程序运行到哪一步出错

#include<iostream>using namespace std;struct Test{Test(int){}Test(){}void fun(){}};int main(){Test a(1);a.fun();Test b(); //此处错误但可以编译b.fun();   //此处编译不通过}
2.

class Test{public:Test(): c(0){}  //const数据成员必须在构造函数初始化列表中初始化static const int a=20;  // 静态常量成员可以在类内初始化static  int b;  // 类内声明const int c;};int Test::b = 20; // 类外初始化,不必再加static关键字

3.

#include<iostream>using namespace std;class base{public:base(int i):m_j(i),m_i(m_j){}int m_i;int m_j;};int main(){base obj(98);cout<<obj.m_i;  //随机数2024482365}

4.
/#include<iostream>using namespace std;class B{private:int data;public:B(){cout<<"default construtor"<<endl;}B(int i):data(i){cout<<"construtor by parameters "<<data<<endl;}~B(){cout<<"destrutor"<<endl;}   } ;B play(B b){return b;}int main(){B temp = play(5);  //   "construtor by parameters "  ,隐式转换调用B(int i):data(i)  //   "destrutor"                play(5)返回时,调用析构函数 //   "destrutor"                 temp的析构函数}


C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。


5.
class Point{private:float x;float y;public:Point(float a=0.0f,float b= 0.0f):x(a),y(b){}friend float distance(Point & left,Point & right);}; float distance(Point & left,Point & right) { return left.x-left.y; }




0 0
原创粉丝点击