C++程序设计入门(上) 之对象和类
面向对象编程:
如何定义对象? 同类型对象用一 个通用的类来定义
class C { int p; int f(); }; C ca, cb;
一个类用变量来定义数据域,用函数定义行为。
class Cirle
{
public:
double r;
Cirle()
{
r = ;
}
Cirle(double newr){
r = newr;
}
double get()
{
return r * r *3.14;
}
};
构造函数:
类中有 一种特殊的“构造函数”,在创建对象时被自动调用。(通常用来初始化类)
Constructors:
Initialize objects (构造函数:初始化对象)
Has the same name as the defining class (与类同名)
NO return value (including "void"); (无返回值)
constructors can be overloaded (可重载)
may be no arguments (可不带参数)
类可不声明构造函数,编译器会提供一个带有空函数体的无参构造函数。
用类创建对象:
ClassName objectName; eg:Circle circle1;
ClassName objectName(arguments); eg:Circle circle2(5.5);
对象访问运算符(.):
objectName.dataField // 访问对象的数据域
objectName.function(arguments) // 调用 对象的一个函数
eg:circle1.radius = 10;
int area = circle1.getArea();
类似于结构体的使用方法。但当问数据域的时候,类的数据域必须是共有属性。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
class Cirle
{
public:
double r;
Cirle()
{
r = ;
}
Cirle(double newr){
r = newr;
}
double get()
{
return r * r *3.14;
}
};
int main()
{
Cirle a;
Cirle b(2.0);
cout << a.get() << endl;
cout << b.get() << endl;
return ;
}
对象指针与动态对象:
Circle circle1;
Circle *pCircle = &circle1;
cout << "The radius is " << (*pCircle).radius << endl;
cout << "The area is " << (*pCircle).getArea() << endl; (*pCircle).radius = 5.5;
cout << "The radius is " << pCircle->radius << endl;
cout << "The area is " << pCircle->getArea() << endl;
在堆中创建对象:
在函数中声明的对象都 在栈上创建,函数返回, 则对象被销毁。
为保留对象,你可以用new运算符在堆上创建它。
ClassName *pObject = new ClassName(); //用无参构造函数创建对象
ClassName *pObject = new ClassName(arguments); //用有参构造函数创建对象 Circle *pCircle1 = new Circle(); //用无参构造函数创建对象
Circle *pCircle2 = new Circle(5.9); //用有参构造函数创建对象 //程序结束时,动态对象会被销毁,或者
delete pObject; //用delete显式销毁
数据域封装:
数据域采用public的形式有2个问题
1.数据会被类外 的方法篡改
2.使得类难 于维护,易出现bug
C++程序设计入门(上) 之对象和类的更多相关文章
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
- Java入门之:对象和类
Java对象和类 Java作为一种面向对象语言,支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念: 对象: 对象是类的一个实例,有状态和行为.例如 ...
- 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)
1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...
- C++程序设计入门(上) string类的基本用法
string类中的函数 1. 构造 2. 追加 3. 赋值 4. 位置与清除 5. 长度与容量 6. 比较 7. 子串 8. 搜索 9. 运算符 追加字符串 string s1("Welc ...
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)
第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温 ...
- 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库
第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...
- 网易云课堂_C++程序设计入门(上)_第3单元:更上一层楼 – 超越C的语法_第3单元作业【3】-在线编程(难度:中;10分)
1 本题要求实现两个重载的swap函数,每个swap函数都可交换3个整数a,b,c的值.将a的值存入b,b的值存入c,c的值存入a, 并且返回三个整数中最大的数的值.例如a,b,c的值为1,2,3,则 ...
- C++程序设计入门(上) 函数学习
局部变量和全局变量的访问: 全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变#include<iostream> int ...
随机推荐
- opencv3.2.0实现连续图片合成avi视频
##名称:利用videowriter实现多张连续图片合成avi视频 ##平台:QT5.7.1+OpenCV3.2.0 ##日期:2017年12月10日 /**************新建QT控制台程序 ...
- 大数据平台的技术演化之路 诸葛io平台设计实例
如今,数据分析能力正逐渐成为企业发展的标配,企业通过数据分析的过程将数据中的信息提取出来,进行处理.识别.加工.呈现,最后成为指导企业业务发展的知识和智慧.而处理.识别.加工.呈现的过程从本质上来讲, ...
- python学习手册中的一些易忘的点(前三部分)
1.ubuntu下让python脚本可直接运行: test.py文件(后缀可省)#!/usr/bin/pythonprint('wwwww') sudo chmod +x ./test.py (sud ...
- c# 线程池:开启10个线程运行Fibonacci,并在所有线程运行完后,得出结果。
namespace CAThreadPool { class ThreadpoolDemo6 { static void Main(string[] args) { ; // One event is ...
- Java 使用stringTemplate导出大批量数据excel(百万级)
目前java框架中能够生成excel文件的的确不少,但是,能够生成大数据量的excel框架,我倒是没发现,一般数据量大了都会出现内存溢出,所以,生成大数据量的excel文件要返璞归真,用java的基础 ...
- 选中复选框,才能在文本框中输东西。button按钮已启用,
- 数据库对比:选择MariaDB还是MySQL?
作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...
- C# 希尔排序
引用:对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点的从数组的一端移动到另一端.例如,如果主键最小的元素正好在数组的尽头,要将它挪到正确的位置就需要N-1次移动.希尔排 ...
- [翻译] GoogleMaterialDesignIcons
GoogleMaterialDesignIcons Google Material Design Icons Font for iOS GMD图片样式的字体,用于iOS开发. It is based ...
- 封装CIImage实现实时渲染
封装CIImage实现实时渲染 CIImage属于CoreImage里面的东东,用来渲染图片的,为什么要封装它呢?其实很简单,封装好之后使用更加方便. 如果直接使用CIImage渲染图片,使用的流程如 ...