C++远征之封装篇(上)

类和对象

关键字:class
类名:首字母大写,最好能体现类的功能
目的不同,类抽象出的信息不同
封装是一种选择性的暴露,把繁琐的细节隐藏,暴露给用户关心的部分。

访问限定符

public:
private:
protected:

类的实例化

栈实例化
堆实例化(申请内存时需要判断指针是否为空,释放内存时需要设空指针)

class Dog{
public:
	void run();
	void bark();
private:
	string name;
	int age;
};

Dog A;
A.name = "Tony";
A.run();

Dog *p = new Dog[5];
if(NULL == p){
	return 0;
}
p[0]->name = "Bob";
p[0]->run();
delete []p;
p = NULL;

字符串类型string

1、四种初始化方式

#include <string>
int main(){
	string s1;
	string s2("abc");
	string s3 = s2;
	string s3(2, s2);
	return 0}

2、string的常用操作string的常用操作

string s = "hello" + "world";//编译错误

ps.两个单纯的字符串不能使用“+”相连,只允许string类型字符串+“字符串”。

数据的封装

限制参数、防止数据被修改,起保护作用

类内定义与内联函数

类内定义:数据成员、成员函数在类的内部。
内联函数:编译时将函数体代码和实参代替函数调用语句,减少调用和返回步骤,提高效率。
类内定义的成员函数优先编译为内联函数。

类外定义

同文件
分文件(正规写法,诸多好处)

构造函数

1、对象初始化方式:

1)有且仅有一次;2)根据条件初始化

作用:避免初始化函数误操作。

2、构造函数规则与特点

在对象实例化时自动调用
与类同名
没有返回值
可以有多个重载,但实例化对象时仅调用一个
没有定义时自动生成

无参构造函数 有参构造函数 (可以有默认值)

3、默认构造函数

实例化对象时不需要参数
可以没有默认构造函数,使用其他构造函数初始化

4、初始化列表特性

先于构造函数执行
只能用于构造函数
可以同时初始化多个数据成员
优点:速度快,效率高
初始化列表的必要性:类中的const修饰的数据成员不能被赋值,只能用过初始化列表。

5、拷贝构造函数

Student(const Student &stu);

参数确定,不能重载
没有自定义时系统自动生成
对象采用直接初始化(Student stu2(stu1))或复制初始化(Student stu3 = stu1)时自动调用拷贝构造函数

6、虚构函数

不允许有参数,不能重载
没用自定义时系统自动生成
对象销毁时自动调用,归还资源

class Student{
public:
	Student();
	Student(string _name, int _age, int _min):m_strName = _name, m_iAge = _age, m_iMin(_min){
	cout << "Student(string _name, int _age, int _min)" << endl;
	}
	~Student();
	void setname(string _name){
		m_strName = _name;
	}
	string getname(){
		return m_strName;
	}
	void initScore(){
		m_iScore = 0;//若不初始化,m_iScore则随机
	}
	void study(int _score){
		m_iScore += _score;
	}
	int getscore(){
		return m_iScore;
	}
private:
	string m_strName;//方便识别类中的数据成员
	int m_iScore;
	const int m_iMin;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值