oop基础(Boolan)

虽然写代码有一年多了,但是转行开始写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++工程师。下次重点复习一下对指针的理解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ## 可重入函数 ### 可重入性的理解 若一个程序或子程序可以安全的被并行执行,则称其为可重入的;即当该子程序正...
    夏至亦韵阅读 726评论 0 0
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,840评论 0 3
  • 【转载】原文地址:std::string详解作者:kieven2008 之所以抛弃char*的字符串而选用C++标...
    VAYY阅读 656评论 0 2
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,707评论 0 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,533评论 1 51