美文网首页
oop基础(Boolan)

oop基础(Boolan)

作者: CNClaus | 来源:发表于2017-04-26 23:42 被阅读0次

虽然写代码有一年多了,但是转行开始写C++仍然能感觉自己基础欠缺。所以打算花几个月的时间系统的复习一下C++基础知识。

C++作为一种深入底层的高级语言,根据应用目标的可以有着完全不同的应用方式,面向过程和面向对象,各有优劣。现在主要说一说面向对象的部分。

根据Class Member类型不同,我们可以简单的将Class分为有指针成员和无指针成员两种类型。从代码经验来看,大部分有一定复杂度的类都会包含指针成员,因为很少有类能够在设计之初就确定所有成员的大小,使用指针成员能给类的使用和维护带来很多好处。唯一要注意的是,不包含指针成员的类可以使用类的默认析构函数,而包含指针成员的类需要自定义析构函数,在对象使用完以后,主动释放指针指向的地址。

例如:

class String

{

public:

String (const char* cstr=0);

String (const String& str);

String & operator= (const String& str);

~String();

char* get_c_str() const {return m_data;}

private:

char* m_data;

};

inline

String::~String()

{

delete[] m_data;

}

类种复杂主要在与类的多重继承,虚类的定义与实现,指针对象与函数的定义和使用,模板类使用等等方面。但是在这个之前,先复习一下类的基础知识。

类是一种特殊的结构,类种包括 了成员函数和成员数据。这些成员根据功能可以是私有、公有以及保护。一般的类会包括私有的数据成员,面向这些数据成员的方法,类的构造方法和析构方法,上文种的代码就包括了这些成员和方法。

类的构造函数可以有多个,类似与函数的重载,根据参数的不同调用不同的构造函数。这里只举一个简单的例子:

inline

String::String(const String& str)

{

m_data=new char[strlen(str.m_data)+1];

strcpy(m_data,str.m_data);

}

要特别注意构造函数的写法,构造函数名字和类相同,并且没有返回值。

这里有一个操作符重载,也实现了类似构造函数的功能,这里函数返回了一个指向类对象的指针。

inline

String& String::operator =(const String& str)

{

if (this==&str)

return *this;

else

{

m_data=new char[strlen(str.m_data)+1];

strcpy(m_data, str.m_data);

return *this;

}

}

刚开始写日志,感觉简书并不是很好用,至少默认的编辑模式对代码应用不是很方便,考虑查查使用方法或者换到github上面写。

相对而言,这些基础的面向对象的知识人都不难理解。主要还是一些违背自然思维的东西阻碍人成为合格的C++工程师。下次重点复习一下对指针的理解。

相关文章

  • oop基础(Boolan)

    虽然写代码有一年多了,但是转行开始写C++仍然能感觉自己基础欠缺。所以打算花几个月的时间系统的复习一下C++基础知...

  • 2018-02-10

    Boolan STL 第二周 OOP与GP区别:OOP总是将data与methods关联在一起,GP则是将data...

  • (Boolan)OOP和GP

    OOP: Object-oriented programming面向对象的编程,例如C++中的类和对象 GP:Ge...

  • Boolan_C++_OOP

    为什么 学习 C++? 他的效率 比其他 面向对象 语言,更快。 作用域,Scope 大括号 以 良好的方式, ...

  • C++ STL与泛型编程-第二篇 (Boolan)

    C++ STL与泛型编程-第二篇 (Boolan) 本章内容:1 OOP(面向对象编程) vs. GP(泛型编程)...

  • 2018-01-20

    Boolan 第四周 高级oop下 转换函数: 将本类转换为其他类型使用,转换函数没有返回类型,通常要加const...

  • 2018-01-26

    Boolan 第五周 高级oop下 vptr:虚指针指向虚表,若类中含有虚函数,不论数量,则类的空间内含有一个指向...

  • OOP基础

    OOP一.概述(object oriented programming面向对象编程) --PHP是混合类型的语言 ...

  • python - OOP基础

    前言 OOP的概念就不说了,想必都很了解了。 Oop的三大特点:继承、封装和多态。python作为动态语言的一种,...

  • Python基础-OOP

    OOP 思想以模块化思想解决工程问题面向过程 VS 面向对象由面向过程转向面向对象 常用名词OO:面向对象OOA:...

网友评论

      本文标题:oop基础(Boolan)

      本文链接:https://www.haomeiwen.com/subject/ehnwzttx.html