类-构造析构-静态友元

  1. 类的定义
    类的内存大小对齐,空类1字节
  2. 类的成员变量
  3. 类的成员函数
  • 类内声明和定义
  • 类内声明,类外实现
  • 不同文件:.h声明 .cpp实现
  1. 类域
  • 局部变量:大括号,括号始 括号终
  • 全局变量:全局,生存周期全局
  • 文件变量:static + 全局变量,当前文件内使用,生存周期全局的
  • 静态局部变量:局部,生存周期是全局的
  • 类域:我的成员可以通过类对象在哪里访问
    • public:公有,只要类类对象,在哪都能使用类成员
    • protected:只能在我的类和派生类内使用
    • private: 只能在我的类内使用
  1. 对象定义:局部、全局、数组、堆
  2. 成员函数的使用 this指针
  3. 类与结构体的区别
    • 和C++的结构体的区别:
      • 定义上:关键字不一样struct class
      • 访问权限:不写,类默认是private,结构体public
      • 其他没有区别了
    • 和C的结构体的区别:
      • 定义上:关键字不一样struct class
      • 访问权限:C里没有public、protected、private
      • 成员:C的结构体里没有函数,C++类有成员函数
      • this: C的结构体里没有this指针

命名空间
作用:避免命名冲突,命名空间可以起别名 namespace a =b;
命名空间是作用域,不能用它来定义变量
命名空间是作用域,不是变量类型,只能在全局范围内定义
可以嵌套

  1. 构造函数
    1.1 构造的作用
  • 类对象创建的时候,用来初始化类对象空间用的
    1.2 构造函数特点
  • 名称和类名相同,返回值(没有),参数(随意)
    1.3 调用时机
  • 类对象刚开始拥有内存的时候
  1. 析构函数
    2.1 作用
  • 对象销毁的时候,释放该对象占用的资源
    2.2 特点
  • 函数名和类型相同,为了和构造区分,前面加个~
  • 函数返回值:没有返回值
  • 参数:必须无参
    2.3 调用时机
  • 类对象销毁的时候->该类对象内存被回收的时候
  • 局部变量:出了作用域
  • 全局变量:程序退出的时候
  • 堆对象:什么时候delete什么时候调用
  1. 构造析构的调用顺序
  • 按成员对象在内存中的分布顺序依次调用
  1. 构造函数分类
    4.1 默认构造函数
  • 类名(){}
    4.2 带参构造函数
  • 类名(参数列表){函数体}
    4.3 初始化列表
  • 哪些成员必须写在初始化列表里
  • 只支持初始化,不支持赋值:const
  • 初始化和赋值的意义不同:引用&
  • 类对象:该类对象的类没有无参构造函数、
  • 初始化列表的初始化顺序:内存分布顺序
    4.4 拷贝构造函数
  • 参数类型是当前类对象的引用的带参构造函数
  • 调用时机:当有类对象产生的时候,并且是以类对象初始化类对象
  • CClas A = B
  • 函数传参的时候:实参初始化形参的时候,形参不是引用
  • 函数返回类型是类类型的时候
    4.5 转换构造函数

大多情况下,用基本数据类型给类对象赋值或初始化类对象的时候
调用的构造函数就叫转换构造函数
用eplicit限制隐式转换构造后使用
D objecta = D(20)创建临时的无名对象 调用拷贝构造

  1. 默认成员函数
Empty();                         // 默认构造函数
Empty(const Empty&);             // 默认拷贝构造函数
~Empty();                        // 默认析构函数
Empty& operator=(const Empty&);  // 默认赋值运算符
Empty*operator&();               // 取址运算符
const Empty*operator&()const;    // 取址运算符const
  1. 静态成员
    1.1 由来
    1.2 定义
  • 静态成员变量:static int m_nNum;
  • 类外初始化:int 类名::m_nNum = 10;
  • 静态成员函数:在类的成员函数名前加static
  • 静态成员变量为所有类对象共有,不依赖类对象存在
    1.3 使用
  • 类对象.成员变量/成员函数
  • 类名::成员变量/成员函数
    1.4 和成员函数的区别
  • 静态成员函数和普通成员函数的区别:

静态成员函数没有this指针,只能直接访问类的静态成员函数/变量,必须通过类对象才能访问普通成员函数/变量

  • 静态成员函数和普通函数的区别

相同:必须通过类对象才能访问类的普通成员函数和成员变量
唯一区别:访问权限不同,普通函数只能访问public成员

  1. 友元
    2.1 由来

    想在类外使用类的限制成员

    2.2 友元函数

    定义
    在类内声明friend
    friend void Draw(CTank obj);
    友元函数和普通成员函数的区别:
    友元函数没有this指针,就是个普通函数,只不过被类声明为可以使用类的限制成员。访问类的成员变量/函数的时候必须有类对象

    2.3 友元类

class CTank {
    friend void Draw(CTank obj);
    friend class CDraw;
public:
    int m_nBlood;
    void Draw() {
        printf("%d\n", m_nDir);
    }
private:
    int m_nDir;
};
    class CDraw {
public:
    void Draw(CTank obj) {
        printf("%d\n", obj.m_nDir);
    }
    void Change(CTank& obj,int nDir) {
        obj.m_nDir = nDir;
    }
};

2.4 友元成员函数

声明其他类的某些成员函数作为我的友元函数

2.5 和成员函数的区别

有this指针,但是这个this指针不是友元类的this指针,不是当前类的this指针,是成员函数本身的类对象的地址。所以要使用当前类的成员,必须通过当前类的类对象

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容