面向对象编程:

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

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. Eclipse 导入 Android studio Exception Ljava/lang/UnsatisfiedLinkEror

    android studio compile fileTree(dir: 'libs', include: ['*.jar']) 没有加载so文件 main 下加入 jniLibs---so文件即可 ...

  2. jQuery轮播图(手动点击轮播)

    下面来看看最终做的手动点击轮播效果: 一.原理说明 (1)首先是轮播图的架构,我采用了一个最外边的大div包住两个小div,一个小div里面放四张图片,另一个小div里面放四个数字按钮 (2)对最外边 ...

  3. error MSB3552: Resource file "**/*.resx" cannot be found. [/ConsoleApp1.csproj]

    问题场景: 练习在docker下操作netcore,镜像为centos7,安装完netcore sdk 2.2后,执行操作: dotnet new consoledotnet run 出现报错: /u ...

  4. 将虚拟网络连接到 ExpressRoute 线路

    本文通过使用 Resource Manager 部署模型和 Azure 门户,帮助将虚拟网络 (VNets) 链接到 Azure ExpressRoute 线路. 虚拟网络可以在同一个订阅中,也可以属 ...

  5. Oracle EBS PO退货失败

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

  6. innodb crash

    今天上午同事处理了一个innodb crash 的问题,没有备份,如何恢复? 查看日志: 180928 8:42:44 InnoDB: Error: page 163855 log sequence ...

  7. Windows 7系统启动MongoDB失败解决办法?

    问题现象: 1.在配置Python环境安装MongoDB时发现在“服务”里面手动启动失败,报错如下: 2.在cmd里面也无法启动,注意这里要以管理员身份启动cmd哦 问题解决: 1.需要先在bin下执 ...

  8. ORACLE RAC clusterware/GI 启动诊断流程图11.2+

  9. Linux partprobe命令详解

    partprobe命令 partprobe: 通知系统分区表的变化 常用的命令展示: 查看帮助 [root@localhost omc]# partprobe --help Usage: partpr ...

  10. CSS学习摘要-布局

    注:全文摘自MDN-介绍CSS布局 CSS页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流.周边元素.父容器或者主视口/窗口的位置.在这个模块中将涉及更多关于页面布局技术的细节: 浮动 ...