博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GeekBand 随笔分享(二)
阅读量:7034 次
发布时间:2019-06-28

本文共 1505 字,大约阅读时间需要 5 分钟。

一、主题一:(三大函数)

 //-------------------------------------------解析------------------------------------------------------------------------

1》默认构造:

    如果没有为一个类显式地定义任何构造函数,编译器将自动为这个类生成默认构造函数。

    由编译器创建的默认构造函数称为合成的默认构造函数,它将依据如下规则初始化类中的成员变量:
   1.内置数据类型的初始化:
    内置数据类型是否自动初始化取决于变量定义的位置。如果变量在全局作用域内定义(即不在任何函数中)或定义为静态局部变量,则这些成员将被初始化为0。如果变量在局部     作用域内定义,则这些成员没有初始化。
   2.类类型变量的初始化:
    调用类的默认构造函数来初始化类类型变量。

 

2》拷贝构造:

    一般分为浅拷贝与深拷贝两种。深拷贝在实际编程中得到可靠的应用。最主要就是避免了在拷贝的过程中,一些内存泄露。

    深拷贝一般采用先申请内存空间,再进行拷贝工作。

 

3》拷贝赋值:

    拷贝赋值一般采用方法为:例如A ->B

    1. 把B的内容清理掉;

    2. 把A复制给B;

    当然赋值构造函数必须能够处理自我赋值的问题,因为自我赋值会出现指针指向一个已经释放的内存。

  

二、主题二:(堆、栈、内存管理)

1》new:

    new”是C++的一个关键字,同时也是操作符。

    我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。如果我们创建的是简单类型的变量,那么第二步会被省略。example:  

class A{   int i;public:   A(int _i) :i(_i*_i) {}   void Say()  { printf("i=%d/n", i); }};A* pa = new A(3);那么上述动态创建一个对象的过程大致相当于以下三句话(只是大致上):A* pa = (A*)malloc(sizeof(A));pa->A::A(3);return pa;

2》delete:

    它与new相类似 ,调用过程相反。

        

三、主题三:( 类模版、函数模版)

1》class template:

   如同函数模板一样,使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。类模板是对一批仅仅成员    数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从    而大大提高编程的效率

   定义类模板的一般形式是:

 template <类型名 参数名1,类型名参数名2,…>
 class 类名
 {
  类声明体
 };
 例如:

template 
 class Smemory {…  public:  void mput(T x);  … }

2》this 指针:

this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。例如,

调用date.SetMonth(9) <===> SetMonth(&date, 9)this帮助完成了这一转换 .

静态成员函数没有this 指针,所以它不能处理成员对象,它只能处理static数据.

    

    

 

转载于:https://www.cnblogs.com/msm-min/p/5269575.html

你可能感兴趣的文章
我的友情链接
查看>>
很好的一个文字工具网址
查看>>
前辈文章摘要
查看>>
CentOS 5.5安装配置Trac1.0
查看>>
我的友情链接
查看>>
超强整理:2012年网页设计趋势
查看>>
sqoop2 五分钟实例
查看>>
线性筛素数
查看>>
通过Windows 8 Powershell轻松创建USB引导盘
查看>>
基础总结篇之二:Activity的四种launchMode
查看>>
理解python中可变对象作为默认参数
查看>>
C++ 操作Office的Access数据库
查看>>
iOS开发——keychain的使用
查看>>
avahi-daemon服务
查看>>
论坛外链如何才能快速收录?
查看>>
热备份路由协议,vlan与生成树(STP)之间的关系
查看>>
CentOS操作MySQL问题集锦
查看>>
Linux基础命令---验证组文件grpck
查看>>
Python安装MySQL模块
查看>>
2012年度IT博客大赛 各奖项获奖名单
查看>>