Boolan - C++学习笔记 一 - 第二周

内联函数直接在头文件中定义。

string.h

#ifndef __MYSTRING_

#define __MYSTRING_

#include

class String

{

public: 

          string(const char* str = 0){}

          String(const String* s) {}

           String& operator=(const String& s){}

            ~String(){}

char* Data()const {return this->data;}private:char* data;};

ostream& operator<<(ostream& os,const String& s)

{

           return os << s.Date();

}

#endif

//Big Three 三巨头:指的是 带指针的类的拷贝构造函数、拷贝赋值函数、析构函数。

浅拷贝:按值拷贝。

深拷贝:按内容拷贝,适用于有指针成员的类。

自赋值:a = a; 

内存管理:栈、堆

:CPU自动管理。不需要程序员来管。

:操作系统的资源,需要程序员自己申请和自己释放。不释放会造成内存泄漏。

函数调用栈用来防止函数内部局部变量、函数入口参数以及函数返回值等

//global 

Complex c3(3,4);  data段。

void function()

{

        Complex c1(2,3);

         Complex* p = new Complex(1,2);//

         delete p;

          static Complex c4(3,5);

}

C++ 运算符 new的工作过程:先分配内存,然后调用 构造函数。

Complex* pc = new Complex(1,2);

new 《=等价于=》 

       Complex* pc;

       void * mem = operator new (sizeof(Complex));//内部调用malloc();

       pc = static_cast(mem);pc->Complex::Complex(1,2);


        String* ps = new String("hello");

delete <<=等价于=>>

        1、先析构。String::~String(ps);

         2、再释放内存。 operator delete(ps);

 delete[] 必须和 new []对应      不然会造成内存泄漏.

delete  和 new  对应。

static:类的静态数据成员,是类的所有对象共享的,它存储在 内存的静态数据区域,某一个类的对象修改了static数据成员,所有的类的其他对象都可见这种修改。

类的静态数据成员初始化只能在类外进行,如: int ClassName::m_static_data = 9;这个类似于全局变量的初始化。

类的静态函数没有this指针,因此只能访问类的静态函数或静态数据成员

静态函数可以通过对象.fun_static()来访问。或者直接用类名::fun_static()调用。

单实例类---设计模式

模板类:

template Ttemplateclass B

      { 

     }

模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。

模版可以分为两类,一个是函数模版,另外一个是类模版

模板函数:引数推导。

运算符重载。

templateT min(T x,T y)

C++标准算法库:模板函数。通用算法库。

命名空间:包装一下代码、数据;便于隐藏,防止重名。

object based  基于类, 面向对象。

                                                      《完》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容