从零开始学习C++(类和对象)
来源:互联网 发布:约翰斯塔克斯数据 编辑:程序博客网 时间:2024/04/27 15:42
C++语言是面向对象的语言。所以类是C++里面的重点,类是对象的模板。
类的作用就是用来保存数据的。如果有个类class Date
就是用来保存日期的。保存了数据就可以通过其他成员函数去操作数据。
类的声明部分
#include<iostream>using namespace std;class date { public: void SetDate(int y, int m, int d); int IsLeapYear(); void Print();private: int year, month, day;};
类的实现部分
void date::SetDate(int y, int m, int d){ year = y; month = m; day = d;}void date::Print(){ cout << year << "." << month << "." << day << endl;}int date::IsLeapYear(){ return(year %4 == 0 && year % 100 != 0) || (year % 400 == 0);}
类的主体
int main(){ int m; date h; h.SetDate(2000, 1, 8); if (h.IsLeapYear()) cout << "2000 is leap year" << endl; h.Print(); system("pause"); return 0; }
函数体有两种写法,一种是把函数体直接写到头后面,类的内部,叫做内联函数。内联函数最终产生的软件比较大,但是会快一点。
可以把函数写在类外面,使类的声明部分不会太大,又保持内联。实现如下:
inline void date::SetDate(int y, int m, int d){}
或者把函数写在外面,叫做外联函数。一般情况下都喜欢写到外面
int date::IsLeapYear()
作用域操作符,表示函数式Date的成员函数
公有和私有
公有:
私有:如果有个函数在私有部分,private,则无法访问。什么都不写的情况下,默认是私有private的。其中有面向对象设计原则。
保护:protected。要学到继承和派生才会详细讲解。
创建第二个类
#include<iostream> using namespace std; class date; class time {}; class people { public: void study(); void woring(date d); private: double height; double weight; double saving; date *Birthday; people *child; time t; };
Date放在最后面就找不到了,C++只能前项引用,会出现syntax error: identifier ‘date’。所以要在第一行加入
class date;
people class里面在放
people child
不允许,则换成people *child
记得C++每个class后面都要有分号;semicolon
C++里还可以实现函数重载,两个函数可以重名,但是里面的参数不能相同
为什么后面要使用指针呢?
如果前面有一整个class,就可以不用指针;如果前面只有class前项引用,就必须使用指针;- 关于类中可否初始化的问题?
class date { public: void SetDate(int y, int m, int d); int IsLeapYear(); void Print(); private: int year, month, day; }; int date::IsLeapYear() { return(year %4 == 0 && year % 100 != 0) || (year % 400 == 0); } void date::SetDate(int y, int m, int d) { year = y; month = m; day = d; } void date::Print() { cout << year << "." << month << "." << day << endl; }
类里面用大括号封装了数据和方法,把类实例化就变成了对象。
对象有属性和行为。
对象
int main() { int m; date h; date date1; date dates[31]; date *pdate; date &date2 = date1; h.SetDate(2000, 1, 8); date1.SetDate(2000, 1, 2); dates[0].SetDate(2000, 1, 2); pdate = new date(); pdate->SetDate(2000, 1, 2); (*pdate).Print(); if(h.IsLeapYear()) cout << " is leap year" << endl; h.Print(); system("pause"); return 0; }
- date1和数组都可以直接操作,数组保存31个对象
- date2引用date1,date2就是date1的别名
- 解引用 (*pdate).Print();
0 0
- 从零开始学习C++(类和对象)
- 从零开始学习C++ (对象)
- 从零开始学习C++(构造器和析构器)
- 从零开始学习C语言
- C\C++ 程序员从零开始学习Android - 个人学习笔记(一) - 计划和书籍
- C\C++ 程序员从零开始学习Android - 个人学习笔记(三) - java基础 - 环境和工具
- 从零开始的Java学习笔记(一):Java的变量,对象,和引用
- object-c 学习第二天(类对象和方法)
- object-c 学习第二天(类对象和方法)
- c/c++学习_封装(类和对象)
- C++Primer学习笔记------对象和类(1)
- C++Primer学习笔记------对象和类(2)
- O-C学习笔记,类和对象
- OBJ-C类和对象学习笔记
- 第二章、Objective-c 语法,继承,protocol和delegate(iOS学习笔记,从零开始)
- 第二章、Objective-C中的@property、@synthesize和dynamic的用法(iOS学习笔记,从零开始)
- 11.从零开始学习C语言--中断循环break和continue
- 15.从零开始学习C语言--指针和数组
- 工厂模式
- gSOAP 源码分析(三)
- GDAL的PDF接口的使用 VS2013
- mysql5.6升级到5.7
- 使用360的自动收录代码到网站以提高收录
- 从零开始学习C++(类和对象)
- springmvc文件上传
- 仿射变换(1)
- 封装cookie的添加,删除,查询方法
- Python学习--21 电子邮件
- 题目1148:Financial Management
- ORACLE中一个字符占多少字节?(中文存储)
- ueditor加链接,如何默认选择在新窗口打开
- 【Gstreamer开发】TI嵌入式处理器GStreamer pipeline