【c++】c++核心编程(2)--类和对象

目录

1.1封装

1.1.2struct和class的区别

1.1.3成员属性设置为私有

1.2对象初始化和处理

1.2.1构造函数和析构函数

1.2.2构造函数的分类及调用

1.2.3拷贝函数的使用

1.2.4构造函数的调用规则

1.2.5浅拷贝和深拷贝

1.2.6初始化

1.2.8静态成员变量和静态成员函数

1.3对象模型和this指针

1.3.1成员变量和成员函数是分开存储的

1.3.2this指针

1.3.3空指针访问成员函数

1.3.4const 修饰成员函数

1.4友元

1.5运算符重载


代码中避免野指针

类:由数据成员定义和成员函数定义构成的一段独立代码

对象:用类定义的存储单元(定义:1.student zhang wang;2.class student {...}zhang,wang;3.class{...}zhang wang;第三个不建议)

内置函数/内联函数(inline)用空间换时间,用函数体替换调用。inline 只有在于代码体在一起是才有用(一般不提倡)

eg:void Foo(int x, int y);

     inline void Foo(int x, int y) // inline 与函数定义体放在一起

面向对象的四大特征:抽象、封装、继承、多态

1.1封装

意义一:设计类的时候,属性和行为写在一起,表现事物

类中的属性和行为被统称为成员

属性---被称为成员属性或者成员变量

行为---被称为成员函数或者成员方法

案例:设计一个圆类,来设计圆的周长。

实例化:通过一个类来创建一个对象的过程

#include<iostream>
using namespace std;
//周长公式:C=2*PI*r
const double PI = 3.14;
//class代表设计一个类,类后面就是类名

class yuan
{
	//访问权限(公共权限)
public:
	//属性(通常为变量)--半径
	int r;
	//行为(通常用函数)--获取圆的周长
	double ZC()
	{
		return 2 * PI*r;
	}
};
//以上为类的声明语句
int main()
{
	//通过圆类,创建一个具体的圆(对象)
//类的定义语句,定义了一个名叫c1的对象
	yuan c1;
    yuan *pc1=c1;
//访问对象成员
    c1.r//“.”读作谁的谁,该语句等价为pc1->c1,“->”读作;谁的指向对象的成员
    
	//给圆进行赋值
	c1.r = 10;
	cout << "c1圆的周长为:" <<c1.ZC()<< endl;
	system("pause");
	return 0;
}

 案例:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。(通过行为给属性赋值)

#include<iostream>
using namespace std;
#include<string>
class student
{
	//权限:
public:
	//属性--姓名--学号
	string name;
	int id;
	//行为--显示学生的姓名和学号
	void show()
	{
		cout << "学号:" << id << "姓名:" << name << endl;
	}
	//通过行为给属性赋值
	void setname(string n)
	{
		name = n;
	}
	void setid(int i)
	{
		id = i;
	}
};
int main()
{
	//通过类,创建一个具体的学生对象
	student s1;
	//s1.id = 21;
	s1.setid(21);
	//s1.name = "张三";
	s1.setname("张三");
	s1.show();
	system("pause");
	return 0;
}

类外定义成员函数:void student::show(){...}(::--->称为预运算符,叫做student的show函数)不建议在类外定义!!!

意义二:在设计类时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:

  • public--公共权限(成员   类内可以访问,类外也可以访问)
  • protected--保护权限(成员   类内可以访问,类外不可以访问)    儿子可以访问父亲中保护的内容
  • private--私有权限(成员   类内可以访问,类外不可以访问)        儿子不可以访问父亲中保护的内容
class person
{
public:
	string name;
	//保护权限--车子
protected:
	string car;
	//私有权限--银行密码
private:
	int password;
	//类内访问
public:
	void text()
	{
		name = "张三";
		car = "拖拉机";
		password = 12345;
	}

};
int main()
{
	//类外访问
	person p1;
	p1.name = "李四";
	//p1.password;----错,私有类外不可以访问
	system("pause");
	return 0;
}

1.1.2struct和class的区别

在c++中,二者的唯一区别:

默认的访问权限不同

  • struct--默认权限为公有
  • class--默认权限为私有

1.1.3成员属性设置为私有

1、可以自己控制读写权限。

2、对于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>