C++基础 (二)有关于类
来源:互联网 发布:acg和sia知乎 编辑:程序博客网 时间:2024/06/09 14:35
2016.8.3 C++ 第二天
// private:数据安全,保护属性,外界(本类之外)不能访问到
// public:提供接口,类与外部之间的一个桥接
// 属性:成员变量 private
// 行为:成员函数 public
构造函数
作用:对成员变量进行初始化
特征:1⃣️必须为public
2⃣️函数名和类名相同
3⃣️没有返回值
4⃣️可以有参数
构造函数的调用:当创建对象时根据参数个数自动调用相应的构造函数(不需要object.形式进行调用)
如果程序中没有任何一个构造函数,编译器提供一个默认构造函数(空的)。
如果程序中有任何一个构造函数,编译器不再提供默认构造函数
一般写两个,一个没有参数,一个带有全部成员的参数
组合类:要求一一对应
函数的重载
在同一个作用域中,函数名相同,参数列表不同,这些函数构成函数重载。参数列表不同分为两种情况:参数个数不同;参数类型不同。
编译器根据参数个数、类型来调用相应的函数
初始化列表:用来对成员变量初始化
1⃣️执行效率高
2⃣️成员变量是const、引用、组合、继承 时,必须使用初始化列表赋值
组合类
一个类A 的成员变量是另一个类的对象,A成为组合类
作用:代码重用
注意:构造函数匹配
析构函数
析构函数的作用:当对象生命周期结束时,回收对象所占空间(堆空间)。如:~Circle()。
1⃣️必须为public
2⃣️没有返回值
3⃣️不能带参数
4⃣️不能被重载(唯一性)
当对象的生命周期结束,自动调用析构函数
// 堆空间 C: malloc free NULL C++: new delete NULL
int *p=new int (100); // 在堆空间分配int大小的空间,存储值为100
cout<<*p<<endl;
char *p1=new char ('a'); // 在堆空间分配char大小的空间,存储值为'a'
cout<<*p1<<endl;
delete p;
delete p1;
p = NULL;
p1 =NULL;
//在堆空间开辟10个int大小的空间
int *p2=new int [10];// 类似于*p2[10]?
for (int i=0; i<10; i++) {
p2[i]=i;
cout<<p2[i]<<endl;
}
delete [] p2;// 删除10个p2空间
*/
// 构造函数释放堆空间
class test1{
private:
int *p; // 当成员变量是指针,空间一定被分配在堆上
public:
test1(){
p = new int [5];
for (int i=0; i<5; i++) {
p[i]=i;
std::cout<<p[i]<<std::endl;
}
}
~test1(){
if (p!=NULL) {
delete []p;
p=NULL;
}
cout<<"NULL"<<std::endl;
}
};
- C++基础 (二)有关于类
- PSET-1:有关于C
- 有关于C语言的一些实用总结 (谭书版)
- html基础 有关于<a href="#" />
- 有关于__align(n)
- 有关于__align(n)
- 有关于C指针的一些知识点(又名C指针编程之道读书笔记)
- 有关于深度优先搜索的二三事儿(《算法设计与实现》摘要)
- 于Dragonboard 410c的智能照明系统(二)
- Objective-C 类基础(二)
- C语言基础(二)
- C/ C++基础(二)
- C基础学习(二)
- C语言基础(二)
- Objective C基础(二)
- C语言基础(二)
- C语言基础(二)
- C 语言基础(二)
- startup.bat详解
- javascript中的innerHTML是什么意思,怎么个用法?
- 划分树求第K大数
- JAVA EE---Servlet 学习第四天
- E - 叠筐
- C++基础 (二)有关于类
- iOS视频下载成功block回调
- VFW(video for window)技术-- 监控
- Linux操作系统
- mybatis和hibernate的区别
- HDU 2896 病毒侵袭
- 读书笔记:《MBA交不了你的创富课》(内附思维导图)
- angullarjs实现锚点楼层跳转
- 堂娜·哈拉维:赛博格宣言