一、综述

类是我们自己定义的数据类型(新类型)

设计类时要考虑的角度:

(1)站在设计和实现者的角度来考虑

(2)站在使用者的角度来考虑

(3)父类,子类

二、类基础

(1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。

(2)一个类的构成:成员变量,成员函数(有许多特殊的成员函数)。

(3)我们访问类成员时,我们就用对象名.成员名来访问成员

如果是指向对象的指针,我们就用指针名->成员名来访问成员。

class student
{
int number;
char name[];
} student someone; // 定义类的对象
someone.number = ;
student *someone1 = &someone;
someone->number = ;
cout << someone1->number << endl;

(4)public成员提供类的接口,暴露给外接,供外界调用;private成员提供各种实现类的细节方法,但不暴露给使用者,外界无法访问这些成员。

(5)struct是成员默认为public的class;      struct A{….}

(5)class是成员默认为private(私有)class A{….}

三、成员函数

class Time
{
public:
int Hour; // 小时
int Minute; // 分钟
int Second; // 秒钟 void initTime(int tmpHour, int tmpMinute ,int tmpSecond)
{
Hour = tmpHour;
Minute = tmpMinute;
Second = tmpSecond;
}
} int main()
{
Time MyTime; // 类对象
MyTime .initTime(MyTime,,,);
cout << MyTime.Hour << endl;
cout << MyTime.Minute << endl;
cout << MyTime.Second << endl;
return ;
}

当做工程来写

//time.h

#ifndef __MYTIME__
#define __MYTINE__ class Time
{
public:
int Hour; // 小时
int Minute; // 分钟
int Second; // 秒钟 void initTime(int tmpHour, int tmpMinute ,int tmpSecond);
}
#endif
//time.cpp

#include “Tiem.h”

// 成员函数的实现
// 其中::称为作用于运算符,表示initTime这个函数属于Time类
void Time::initTime(int tmpHour, int tmpMinute ,int tmpSecond)
{
Hour = tmpHour; // 成员函数中可以直接使用成员变量名
Minute = tmpMinute;
Second = tmpSecond;
}

入口函数文件

#include “Time.h”

int main()
{
Time MyTime; // 类对象
MyTime .initTime(MyTime,,,);
cout << MyTime.Hour << endl;
cout << MyTime.Minute << endl;
cout << MyTime.Second << endl; return ;
}

四、对象的拷贝

对象本身是可以拷贝的

默认情况下,类对象的拷贝,是每个成员变量的逐个拷贝。

如果在类中定义适当的赋值运算符就能够控制对象的拷贝行为。

Time myTime;
myTime.Hour = ;
myTime.Minute = ;
myTime.Second = ; Time myTime2 = myTime; // 定义新对象并初始化
Time myTime3(myTime);
Time myTime4 {myTime};
Time myTime5 = {myTime};
myTime5.Hour = ;

五、私有成员

class Time
{
private:
int Millsecond; // 毫秒
public:
int Hour; // 小时
int Minute; // 分钟
int Second; // 秒钟 void initTime(int tmpHour, int tmpMinute ,int tmpSecond)
{
Hour = tmpHour;
Minute = tmpMinute;
Second = tmpSecond;
} void initMillTime(int mls)
{
Millsecond = mls; // 成员函数可以访问成员变量,不管成员是否私有
}
} Time myTime;
//myTime. Millsecond = 1000; // 出错,无法访问
myTime.initMillTime(); // 私有成员变量的值可以通过公有的成员变量来获取与设置

C++基础知识:成员函数、对象拷贝、私有成员的更多相关文章

  1. C++之在类内部访问对象的私有成员

    一.引言 今天看项目里的一段代码发现,竟然可以再类的成员函数中访问该类的对象的私有成员.感觉不可思议. 自己写的实例代码: #include <iostream> using namesp ...

  2. 类1(this指针/const成员函数/类作用域/外部成员函数/返回this对象的函数)

    假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_dat ...

  3. 通过指针访问C++对象的私有成员

    C++对象的私有成员是禁止类外的访问的.但是我们仍然可以通过指针访问C++对象的私有成员. #include <iostream> using namespace std; class A ...

  4. python基础知识13---函数对象、函数嵌套、名称空间与作用域、装饰器

    阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 ...

  5. php面试笔记(5)-php基础知识-自定义函数及内部函数考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...

  6. [C/C++基础知识] main函数的参数argc和argv

    该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...

  7. Python基础知识:函数

    1.定义函数和调用函数 #定义函数def def greet_user(username): '''简单的问候语''' print('Hello,%s!'%username) greet_user(' ...

  8. Js基础知识7-Es6新增对象Map和set数据结构

    前言 JavaScript中对象的本质是键值对的集合,ES5中的数据结构,主要是用Array和Object,但是键只能是字符串.为了弥补这种缺憾,ES6带来了一种新的数据结构Map. Map也是键值对 ...

  9. Java基础知识3-类和对象(1)

    面向过程和面向对象的区别 面向过程(结构化程序设计) 实际上是一个面向操作过程,首先设计一系列过程(算法)来求解问题(操作数据),然后再考虑存储数据的方式(组织数据).即程序=算法\+数据结构.对应典 ...

  10. ES6基础知识(Promise 对象)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

    在配置文件中添加 <identity   impersonate= "true "   userName= "Administrator "   pass ...

  2. nvidia显卡驱动

    http://blog.csdn.net/Monica__2012/article/details/75577522 $nvidia-smi

  3. SpringMvc 全局异常处理器定义,友好的返回后端错误信息

    import com.google.common.collect.Maps; import org.apache.log4j.Logger; import org.springframework.be ...

  4. Web前后端数据交换技术和规范发展史:Form、Ajax、Comet、Websocket

    第一阶段:Form web应用想要与服务器交互,必须提交一个表单(form).服务器接收并处理该表单,然后返回一个全新的页面. 缺点:前后两个页面需要更新的数据可能很少,这个过程可能传输了很多之前那个 ...

  5. select for update [nowait]

    Syntax The NOWAIT and WAIT clauses let you tell the database how to proceed if the SELECT statement ...

  6. Hello_Motion_Tracking 任务一:Project Tango采集运动追踪数据

    我们来看一下中的几个基本的例子 (区域描述.深度感知.运动追踪.视频4个) 参考:Google Tango初学者教程 1. hello_motion_tracking package com.proj ...

  7. [label][Node.js] Three content management systems base on Node.js

    1. Keystonejs http://keystonejs.com/ 2. Apostrophe http://apostrophenow.org/

  8. [react002] component基本用法

    1 什么是component 设计接口的时候,把通用的设计元素(按钮,表单框,布局组件等)拆成接口良好定义的可复用的组件. 这样,下次开发相同界面程序时就可以写更少的代码,也意义着更高的开发效率,更少 ...

  9. linux中执行java或者mvn命令提示没有权限解决办法

    $ chmod a+x /var/jenkins_home/jdk1.8.0_191/bin/java $ chmod a+x /var/jenkins_home/apache-maven-3.3.9 ...

  10. 10-08常用的TIME和DATE函数以及各个函数对应的头文件

    系统时间和日期函数:     #include <time.h>     char *asctime(const struct tm *tm);//将tm中存放的信息转换为标准格式    ...