有错的地方,或者不同意见的,烦请留言,或者发邮箱。
邮箱地址: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