回顾:

类和对象

class 类名

{

public:

private: 在类的类部可以访问,在类的外部不能直接访问。

protected: 在类的类部可以访问,在类的外部不能直接访问,其子类可以访问。

};

class student

{

构造函数

析构函数

};

------------------------------------------

1.初始化列表

类名(参数表):要初始化的成员变量(参数),成员变量2(参数)...

{

}

2.this指针

在类成员函数(不包括静态成员函数)中,都隐藏着一个this指针(自引用指针)

this指针:谁调用 就指向谁。

3.静态成员

为了实现一个类的多个对象之间的数据共享,C++提出了静态成员的概念。

在一个类中,如果将一个成员说明为static,这种成员称为静态成员

静态成员分为静态成员变量和静态成员函数

静态成员它不属于某个具体的对象,而是属于某种类型

调用静态成员的方法:

类名::要访问的静态成员

静态成员函数和非静态成员函数的区别:

1.静态成员函数主要用来访问静态成员变量,非静态的成员函数可以访问静态成员变量

2.静态成员函数中,是没有this指针的

4.复制/拷贝 构造函数

格式:

类名(const 类名&);

1.当在类中没有显式声明拷贝构造函数时,系统自动创建一个拷贝构造函数。

2.用一个存在的对象构建一个新对象时,会自动调用拷贝构造函数

Test t2(t1);

Test t2 = t1;

3.当函数参数为类类型时,传弟对象时,也会调用拷贝构造函数

4.系统提供的拷贝构造函数,称为浅拷贝。一旦类的成员变量中有动态内存分配,那么要使用深拷贝。

int a = 10;

int b = a;

#include<iostream>
using namespace std;

class Test
{
public:
Test(int a,int b):a(a)
{

this->b = b;
}
void show()
{
cout << this << endl;
cout << this->a << endl;
cout << this->b << endl;
}
private:
const int a;
int b;
};

int main()
{
Test t(100,200);
Test t1(10,20);
cout << "&t=" << &t << endl;
t.show();
cout << "------------" << endl;
cout << "&t1=" << &t1 << endl;
t1.show();

cout << "sizeof(Test) = " << sizeof(t) << endl;
return 0;
}

#include<iostream>
using namespace std;
class student
{
public:
student()
{
num = 1;
name = "zhangfei";
count++;
}
void show()
{
cout << "我叫" << name << ",我的学号是 " << num << endl;
}

static int getCount()
{
// cout << this << endl;//error
return count;
}

/*
void setCount(int c)
{
if(c < 0)return;
count = c;
}
*/
private:
int num;
string name;
static int count;

};
int student::count = 0;

int main()
{
cout << student::getCount() << endl;
student t1,t2;
// t1.show();
cout << student::getCount() << endl;//

};

#include<iostream>
using namespace std;

class TestCopy
{
public:
TestCopy()
{
a = 0;
b = 0;
cout << "TestCopy()" << endl;
}
/*
TestCopy(const TestCopy& tc)
{
this->a = tc.a;
this->b = tc.b;
cout << "TestCopy(const TestCopy)" << endl;
}
*/
void show()
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
private:
int a;
int b;

};

void func(TestCopy& ft)
{
ft.show();
}

int main()
{
TestCopy t;
TestCopy t1(t);
TestCopy t2 = t1;
TestCopy t3;
t3 = t1;
t.show();
t1.show();

cout << "----------------" << endl;
func(t);
return 0;
}

#include<iostream>
using namespace std;

class Test
{
public:
Test()
{
p = new int(100);
}

Test(const Test& rt)
{
//0.
if(this == &rt)
return;
cout << &rt << endl;
cout << this << endl;
//1.开辟新空间
p = new int;
//2.拷贝内存空间中的值
*p = *(rt.p);
cout << "拷贝构造函数" << endl;
}

void show()
{
cout << *p << endl;
}

~Test()
{
delete p;
}
private:
int *p;

};

int main()
{
Test t;
Test t1(t);
t.show();
t1.show();
cout << "----------------" << endl;

Test t2(t);//??
t2.show();

return 0;
}

C++第三天学习的更多相关文章

  1. 20145213《Java程序设计》第三周学习总结

    20145213<Java程序设计>第三周学习总结 教材学习内容总结 正所谓距离产生美,上周我还倾心于Java表面的基础语法.其简单的流程结构,屈指可数的基本类型分类,早已烂熟于心的运算符 ...

  2. 20145304 Java第三周学习报告

    20145304 <Java程序设计>第三周学习总结 教材学习内容总结 1.定义类: 类定义时使用class关键词,建立实例要使用new关键词. 代码如下: /*定义类 书上例子 衣服的型 ...

  3. 20145330《Java程序设计》第三周学习总结

    20145330 <Java程序设计>第三周学习总结 第三周知识的难度已经逐步上升,并且一周学习两章学习压力也逐渐加大,需要更高效率的来完成学习内容,合理安排时间. 类与对象 对象(Obj ...

  4. 20145337《Java程序设计》第三周学习总结

    20145337 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例.我觉得在视频中对类与对象关系的描 ...

  5. 20145218 《Java程序设计》第三周学习总结

    20145218 <Java程序设计>第三周学习总结 教材学习内容总结 定义类 编写程序要产生对象就要先定义类.类是对象的设计图,对象是类的实例.类定义时使用class关键词,建立实例时, ...

  6. 《Java程序设计》第三周学习总结

    20145224-陈颢文 <Java程序设计>第三周学习总结 教材学习内容总结 一.定义类: ·类定义时使用class关键字,要对类中变量(值域成员/对象数据成员)行类型声明. class ...

  7. JDBC第三次学习

    这是我的JDBC第三次学习了,在学习的过程中,老是会忘掉一些知识,不记下笔记实在不行啊! 使用JDBC调用存储过程 (1)关于如何使用Navicat(11.1.13) for MySQL如何创建存储过 ...

  8. 20155304 2016-2017-2 《Java程序设计》第三周学习总结

    20155304 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 类与对象 定义: 对象(Object):存在的具体实体,具有明确的状态和行为. 类( ...

  9. 201521123038 《Java程序设计》 第三周学习总结

    201521123038 <Java程序设计> 第三周学习总结 1. 本周学习总结 附大图链接 http://naotu.baidu.com/file/5774caa2be710afbc0 ...

  10. 201521123072《java程序设计》第三周学习总结

    201521123072<java程序设计>第三周学习总结 标签: java学习 1. 本周学习总结 2. 书面作业 1,代码阅读 public class Test1 { private ...

随机推荐

  1. HDU 2546 饭卡 01背包变形

    题目大意:中文题就不多说了 题目思路:由题意可知,只要高于5元,就可以随便刷,那我们就把最贵的留在最后刷.但是如果低于5元就什么也不能刷(哪怕你要买的物品价格不足五元),所以我们可以先求出(n-5)元 ...

  2. Android在一个APP中通过包名或类名启动另一个APP

    开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通 ...

  3. UML基础概念(转)

    UML基础概念 UML概述 uml简介 uml(unified Modeling Language )为面向对象软件设计提供统一的.标准的.可视化的建模语言.适用于描述以用例为驱动,以体系结构为中心的 ...

  4. 字符串解析运用-将字符串分解为多个整数,求各整数之和(华为oj)

    描述 输入内容是一个字符串,输出结果为一个字符串.要求在输入的字符串中识别出多个整数单元,并且对各个整数单元求和运算,最终输出一个字符串,输出的字符串内容是对各个整数单元求和的结果.两个整数单元之间以 ...

  5. Ceph RBD CephFS 存储

    Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ...

  6. 基于js脚本的单机黄金点游戏

    题目描述 N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G( ...

  7. sencha touch环境搭建

    引入touch文件,包括resources和sencha-touch-debug.js文件 index.html文件内容如下: <!DOCTYPE HTML> <html> & ...

  8. (四)Jquery Mobile表单

    Jquery Mobile表单与列表 一.JM表单      1.表单      普通html表单            效果:          2.只能输入数字的表单           效果:  ...

  9. Lumen 配置、重写、404错误等

    1.权限是否有设置为777: 2.app key是否有设置: 3.apache下是否有开启重写,a2enmod: 4.nginx下server的location是否配置正确,重写规则有没添加,rout ...

  10. Sematic库系列一

    最近在做项目时采用了sematic css 库,由于这个库的资料太少,在做项目中遇到很多问题,在这里做一些记录 1. 下拉框demo HTML 代码 <div class="field ...