首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
GeekBand C++面向对象高级编程(上)一
时间:
2016-05-12 20:52:56
阅读:
204
评论:
0
收藏:
0
[点我收藏+]
标签:
目标:培养正规大气的编程习惯。
本周关键点:防卫式声明、初始列、pass by value vs. pass by reference、const、操作符重载
一、C++编程简介
1、Class经典分类:带Pointer和不带Pointer。两种分类在思考上截然不同。
2、
2.1、对于单一Class的设计(Object Based基于对象)
2.2、设计多个对象,他们相互之间有关联(Object Oriented面向对象)
Class直间的关系:
--继承(inheritance)
--复合(composition)
--委托(delegation)
3、C++学习内容:C++语言和C++标准库
二、头文件与类的声明
1、与C语言的函数和数据做比较。
C语言没有对象概念,数据都是全局变量;
C++对数据和函数进行了分装。(Class和struct的区别?)
2、C++关于数据和函数
类-->对象有数据和函数,数据可以有很多份,但函数只有一份!??
3、C++ programs代码基本形式
*.h:头文件;*.cpp:主程序;#include<标准库.h>;#include"非标准库.h";
4、头文件中的防卫式声明
#ifndef __COMPLEX__
#define __COMPLEX__
//防止重复的Include
#endif
5、头文件的布局
-1:防卫式声明
0:前置声明
1:类声明
2:类定义(实现)
6、Class声明
class classname
{
public:
//构造函数
//其他函数
private:
//数据
//友元函数(也可能没有)
}
7、class template(模板简介)
三、构造函数
1、类的函数可以在class body内定义,也可以在body内声明,在body外定义。
2、inline(内联函数):(在body内定义或者body外定义的函数前加inline)(只是一个建议作用)
3、access level(访问级别):public和private、protected(private:数据部分)
4、constructor(ctor,构造函数):new动态的方式创建一个对象,得到对象指针。
4.1、函数名与类名相同;4.2、可以有参数;4.3、可以有默认值;4.4、无返回值类型;4.5、(技巧)初值列;
4.6、构造函数可以overloading(重载)。
5、把构造函数放入private区域,类不允许被外界创建对象。
Singleton(单例模式):静态函数,静态数据。
6、析构函数:不带指针的类多半不需要析构函数。
四、参数传递与返回值
1、const member functions(常量成员函数):在函数名的后边加 const。
如果一个函数不会改变对象数据内容,就要加const!
不加就可能出问题,如果创建的对象被标记为const,如果此时,该对象调用未被标记为const的函数,编译器会报错。(见课件)
const 扩大了函数的使用范围,限制了函数的功能(权限)。
2、参数传递:pass by value vs. pass by reference(to const)
返回值传递:return by value vs. return by reference(to const)(尽量return by reference:返回值不是Local Var)
3、friend(友元):可以访问对象private成员。
3.1、相同class的各个object互为friends(友元)
五、操作符重载 与 临时对象
1、操作符是一种函数。操作符“+”指的是相加还是正号,要根据参数区分;
2、operator overloading(操作符重载-1,成员函数)this(任何成员函数都有一个this Pointer)
3、return by reference时,传递至无需知道接收者是以reference形式接收!return by reference很强悍,不在乎性别,男女通吃!
3、temp object(临时对象)用法:typename();返回临时对象时,函数返回值不能是 reference。它是local object
4、operator overloading(操作符重载-2,非成员函数)(无this)
5、operator <<为什么不能写成成员函数啊?
GeekBand C++面向对象高级编程(上)一
标签:
原文地址:http://blog.csdn.net/liang08114/article/details/51357024
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!