C/C++ 初学简单笔记 —1—
来源:互联网 发布:linux安装usb网卡驱动 编辑:程序博客网 时间:2024/05/20 05:30
1)头文件 .h, 包含类的定义。
2)源文件 .cpp, 类的成员函数,
3)源文件 .cpp, 编写主函数
2. C++为了节省内存,将成员函数的代码存储在计算机内存的一个公用区中,以供该类的所有对象共享。
3. 对象初始化:1)用成员函数 putXxx 2)用构造函数。
4. delete 用法
delete 指针名 // 变量 delete *p
delete []指针名 // 一维数组 delete []p;
delete [行数]指针名 // 二维数组 delete [5]p;
只要程序中,有用new动态分配空间,那么结尾的时候,必须要用delete释放内存空间。
5. C++有三种权限 public private protect,只有public是可以在类外直接访问的,默认权限是private
6. '::' 域运算符,就是表明成员变量或是成员方法是属于那个类的。
7. 关于this指针。
如下函数void student::put(int id, char *name, student *const this)
{this->id=id;...}
this是指向本对象的只读指针,是一个隐含的形参.由系统在幕后自动设置,自动维护。
如果想返回当前对象,可用 return *this;
8. 构造函数,可以在构造函数中实现初始化,注意:构造函数前面不能加上void,否则出错!
如果重载了构造函数,那么系统就不会自动生成构造函数了。
所以只要重载了构造函数,最好写上无参的构造函数,这是一个好习惯。
9. 拷贝函数,就是为了对象间的拷贝,默认的拷贝函数会执行拷贝工作。
拷贝函数形式类型::类名(类名 &对象别名)
{...}
如:
A a;
A b(a);
A c = a;
以上都实现了对象的复制,我暂时想不出有什么区别。
10. 析构函数, 在对象消亡的时候,自动调用,默认的析构函数什么都不做。
A a1;
A *a2 =new A();
程序结束的时候,a1 会自动调用析构函数,而a2不会自动调用析构函数!
我觉得可能是a1在栈内存中,运行结束后,弹栈,所以对象消失,会自动调用析构函数
而a2的声明在栈内存中,而实例化new A()分配在堆中,弹栈的时候,a2会消失,但是new A()不会消失。
所以没有调用析构函数。需要用 delete *a2 释放。
11.预编译
#ifdef DEBUG
可以进行debug测试#endif
以上的语句可以用于debug测试,如果不想执行debug里面的语句,可以将前面的定义值去掉就行了。
12. static 声明的语句,只会执行一次。
如:
for (i=0; i<10; i++)
{
static int b=0;
b++;
cout<<b<<endl;
} // 可以看到b的值是不停增大的,意味着用static修饰的声明语句只执行了一次!
- C/C++ 初学简单笔记 —1—
- C/C++ 初学简单笔记 —2—
- C/C++ 初学简单笔记 —6.1 — 多线程
- C/C++ 初学简单笔记 —6.2 — 多线程
- C/C++ 初学简单笔记 —2.1— 类的友元
- C/C++ 初学简单笔记 —3— 继承与派生
- C/C++ 初学简单笔记 —4— 多态性 虚函数和抽象类
- C/C++ 初学简单笔记 —4.1— 多态性 运算符重载
- C/C++ 初学简单笔记 —5— 文件I/O
- c初学笔记摘要
- 初学C#-----笔记一
- 初学C#-----笔记二
- Object C初学学习笔记(1)
- 初学c/c++——浅谈指针
- 初学c/c++——浅谈引用
- Mapx初学笔记(c#)
- 【初学】Objective-C学习笔记-Objectiv-C
- C初学(1)
- “复旦602” 电子数字计算机
- chattr命令
- VBscript 中库函数的使用练习
- hadoop2.2.0安装与启动
- I2C通信 读写数据过程
- C/C++ 初学简单笔记 —1—
- 数据库同一张表字段横向与纵向相加
- 演练Ext JS 4.2自定义主题
- [遇到的问题]ubuntu 用wget下载ftp时,报端口号错误
- IOS KVO,NSKeyValueObservance: Observer:, Key path:, Options:
- Kruskal 最小生成树
- CodeForces 208A/D 18周周赛
- Mysql创建用户并为用户分配数据库中多表不是全部表权限
- Linux的sysctl 命令参数