美文网首页
Boolan - C++学习笔记 一 - 第二周

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

作者: amberfjx | 来源:发表于2017-04-19 21:52 被阅读0次

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

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  基于类, 面向对象。

                                                      《完》

相关文章

网友评论

      本文标题:Boolan - C++学习笔记 一 - 第二周

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