C++学习笔记一

对象和类

  1. 面向对象编程(OOP)特性

  • 抽象
  • 封装和数据隐藏
  • 多态
  • 继承
  • 代码的可重用性
  1. 访问控制

  • private, protected, public
  • class 声明默认为 private, struct声明默认为public
  • 为了更具可读性,建议显式的说明访问权限
  1. 实现类成员函数

  • 定义类成员函数时,使用作用域解析运算符(::)来标识函数所属的类
  • 类方法可以访问类的private组件
  • 不属于公共接口的成员函数声明为private
  1. 内联方法

  • 定义于类声明中的函数自动内联
  • 类声明常将短小的成员方法定义为内联的
  • 使用inline限定符可将类外定义的方法变成内敛方法
  • 根据改写规则(rewrite rule),在类声明中定义方法等同于用原型替换方法定义,然后在类声明的后面将定义改写为内联函数
  • 内联函数的特殊规则要求在每个使用它的文件中都对其定义,最简便的方法是将内联定义放在定义类的头文件中
  1. 使用类

  • 声明类变量或new创建一对象
  • 声明类变量时下面的方法是不对的
Test t1(); // 注意这不是表示使用默认构造函数,而是声明了一个函数原型
  • 正确的写法
Test t1;
Test t2(10);
Test* t3 = new Test();
  1. 构造函数和析构函数

  • 使用构造函数
Point p1 = Point(1, 2); //显式调用
Point p2(3, 4); //隐式调用
Point* p3 = Point(5, 6); //结合new运算符调用
  • 默认构造函数:在未提供显式初始值时,用来创建对象的构造函数
Point p; //默认构造函数隐式版本

如果没有提供任何构造函数,则C++会提供默认构造函数,拷贝构造函数转移构造函数
如果定义了构造函数,建议同时提供默认构造函数
两种方法定义默认构造函数:

  • 给所有参数提供默认值
  • 重载一个没有参数的构造函数
  • 注意:
  • 构造函数大部分情况声明为public
  • 构造函数可以重载
  • 构造函数不能声明为虚函数
  • 析构函数

如果创建的是静态存储类对象,则其析构函数在程序结束时自动被调用
如果创建的是自动存储类对象,则其析构函数在程序执行完代码块时自动被调用
如果是new创建的对象,将驻留在堆区中

  1. const成员函数

cosnt Point p = Point(1, 2);
p.show(); //如果show方法为非const方法,编译器将拒绝执行该语句

对于有参数的方法可以通过将参数声明为const引用或指向const的指针解决
对于没有参数的方法,将const放在方法圆括号的后面

void show() const;
void Point::show() cosnt {}
  1. 对象数组

调用默认构造函数

Point points[5];

调用构造函数初始化

Point points[2] = {
    Point(1, 2),
    Point()
};
  1. 作用域内枚举

  • C++11提供了一种新枚举,其枚举常量的作用域为类(为了避免不同枚举明明冲突)
enum class egg {SMALL, MEDIUM, LARGE, JUMBO};
enum class t_shirt {SMALL, MEDIUM, LARGE, XLARGE};

使用时需要用枚举名来限定枚举量c

egg choice = egg::SMALL;
t_shirt size = t_shirt::SMALL;
  • C++11作用域内枚举底层类型为int
  • 可用如下方法将底层类型设为short, 底层类型必须为整型
enum class : short egg {SMALL, MEDIUM, LARGE, JUMBO};
  1. 小结

面向对象编程强调的是程序如何表示数据. 使用OOP方法解决问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据, 然后设计一个类实现接口. 一般来说, 私有数据成员存储信息, 公有成员方法提供访问数据的唯一途径. 类将数据和方法组合成一个单元, 其私有性实现数据隐藏.

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

推荐阅读更多精彩内容