面向对象编程:

如何定义对象?  同类型对象用一 个通用的类来定义

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++程序设计入门(上) 之对象和类的更多相关文章

  1. 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)

    第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...

  2. Java入门之:对象和类

    Java对象和类 Java作为一种面向对象语言,支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念: 对象: 对象是类的一个实例,有状态和行为.例如 ...

  3. 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)

    1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...

  4. C++程序设计入门(上) string类的基本用法

    string类中的函数 1. 构造 2. 追加 3. 赋值 4. 位置与清除 5. 长度与容量 6. 比较 7. 子串 8. 搜索 9. 运算符 追加字符串 string s1("Welc ...

  5. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)

    第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  6. 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)

    第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回   提交作业(截止时间已过) 完成并提交作业     作业批改 互评训练   互评作业   自评作业     成绩公布 查看成绩 温 ...

  7. 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库

    第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...

  8. 网易云课堂_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,则 ...

  9. C++程序设计入门(上) 函数学习

    局部变量和全局变量的访问: 全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变#include<iostream> int ...

随机推荐

  1. React—Native开发之原生模块向JavaScript发送事件

    首先,由RN中文网关于原生模块(Android)的介绍可以看到,RN前端与原生模块之 间通信,主要有三种方法: (1)使用回调函数Callback,它提供了一个函数来把返回值传回给JavaScript ...

  2. Redis在windows下安装过程(转载)

    转载自(http://www.cnblogs.com/M-LittleBird/p/5902850.html) 一.下载windows版本的Redis 官网以及没有下载地址,只能在github上下载, ...

  3. Reset GitLab Root Password

    重置gitlab管理员密码 Log into your server with root privileges. Then start a Ruby on Rails console. Start t ...

  4. Storm监控文件夹变化 统计文件单词数量

    监控指定文件夹,读取文件(新文件动态读取)里的内容,统计单词的数量. FileSpout.java,监控文件夹,读取新文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  5. Prometheus Node_exporter 之 Basic CPU / Mem / Disk Gauge

    1. CPU Busy :收集所有 cpu 内核 busy 状态占比 type: SinglestatUnit: perent(0-100)(所有 cpu使用情况 - 5分钟内 cpu 空闲的平均值) ...

  6. Oracle EBS PO退货失败

    无法读取例程 &ROUTINE 中配置文件选项 INV_DEBUG_TRACE 的值. 系统-配置文件-地点层 INC%调试%踪 是 select *  from po_interface_e ...

  7. Java中对文件的序列化和反序列化

    public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objec ...

  8. java:通过Calendar类正确计算两日期之间的间隔

    在开发Android应用时偶然需要用到一个提示用户已用天数的功能,从实现上来看无非就是持久化存入用户第一次使用应用的时间firstTime(通过SharedPreferences .xml.sqlit ...

  9. 自定义UITabbarController控制器

    自定义UITabbarController控制器 这是定制UITabbarController的基本原理,没有进行功能性封装. 效果:   源码地址: https://github.com/YouXi ...

  10. 一段滚动文字的js (jQuery)

    function startmarqueeOneSMS() { var t; var to; var ishover = false; var waitone = 3000; var speed = ...