C++常见面试题个人总结(1)

有错的地方,或者不同意见的,烦请留言,或者发邮箱。

邮箱地址:1746902011@qq.com

—————————————————————————————————

1,对象是什么?类又是什么?

对象是个相对具体的概念,比如说老虎,狮子,人;类是个相对抽象的概念,比如说哺乳动物,是对有相同特性的对象的一个划分。

2,面向过程和面向对象的区别?

面向过程:“过程”,顾名思义,就是说要针对某一步,就是实现代码是按照步骤来,比如打开冰箱,分三步,你一步一步的的去实现;

优点:代码耦合性强,想想每一步都是互相关联写出来的,耦合性能差么。

缺点:可测性差,想测试某个功能对不对,就需要整体来一遍,太麻烦。

面向对象:“对象”,也就是说,要针对某个东西,针对它的特点去实现,比如打开冰箱,分冰箱和人,人做什么,冰箱做什么。

优点:可测性强,看某个对象对不对,可以单独对其进行测试。

缺点:耦合性弱,实现的对象之间,并无直接关系,你实现你的,我实现我的,最后拼起来用。

3,面向对象的特性是什么?

封装,继承,多态。

封装:封装嘛,就是把东西包起来,代码呢,就是把一些变量给包起来,对外,只提供使用方法,不需要看到内部做了什么。

继承:这个就是c++的优势来源之一,将父类的东西继承过来,直接用,不需要再把父类的东西写一遍。

多态:这个是基于继承的,如果没有继承,就谈不上多态,子类继承父类的东西,加上自己独有的,就会呈现多态。

C++的多态性具体体现在运行和编译两个方面:

在程序运行时的多态性通过继承和虚函数来体现;

在程序编译时多态性体现在函数和运算符的重载上;

4,c++是类型安全语言吗?

c和c++都不是,因为它们都可以做类型强制转换。c#是类型安全语言。

5,构造函数和析构函数的作用是什么?

构造函数:

类的构造函数是一类比较特殊的成员函数,在创造类的时候被调用,构造函数的名字和类的名字一样,构造函数没有返回值,参数可有可无。


#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();  // 这是构造函数
 
   private:
      double length;
};
 
// 成员函数定义,包括构造函数
Line::Line(void)
{
    cout << "Object is being created" << endl;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
double Line::getLength( void )
{
    return length;
}
// 程序的主函数
int main( )
{
   Line line;     //创建类的一个新对象
	cout << "here" << endl;  /*加这句是为了验证下面函数被调用前,构造函数已经被执行*/
   // 设置长度
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <<endl;
 
   return 0;
}

代码来源:参考5

析构函数:

类的析构函数也是一种比较特殊的类的成员函数,在删除所创建的对象时调用,析构函数的名字和类一样,只是前面加了一个~,没有返回值,也没有参数。


#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();   // 这是构造函数声明
      ~Line();  // 这是析构函数声明
 
   private:
      double length;
};
 
// 成员函数定义,包括构造函数
Line::Line(void)
{
    cout << "Object is being created" << endl;
}
Line::~Line(void)
{
    cout << "Object is being deleted" << endl;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
double Line::getLength( void )
{
    return length;
}
// 程序的主函数
int main( )
{
   Line line;
 
   // 设置长度
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <<endl;
 	cout << "here" << endl;  /*这个地方就是为了验证,在return前,创建的对象被删除了*/
   return 0;
}

代码来源:参考5

6,c++有布尔类型吗?

c++有布尔类型,用关键字bool定义。

参考1:https://blog.csdn.net/jerry11112/article/details/79027834

参考2:https://www.cnblogs.com/yjd_hycf_space/p/7495640.html

参考3:https://baike.baidu.com/item/%E7%B1%BB%E5%9E%8B%E5%AE%89%E5%85%A8/7308285

参考4:https://www.cnblogs.com/cxq0017/p/6490945.html

参考5:http://www.runoob.com/cplusplus/cpp-constructor-destructor.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值