C++类和对象及其默认成员函数

来源:互联网 发布:开淘宝店空挂商品 编辑:程序博客网 时间:2024/06/05 16:55
类和对象的一些基础:
类是对一个事物的描述,可以看做成一个类型(int.char等),他并没有分配空间。
对象是类定义出来的一个实物。
类的成员访问限定符:public(公有),private(私有)。  私有只可以类内访问。公有内外都可以访问。
类外定义(私有的不可以定义)成员函数需要加作用域访问符;
静态变量需要类内声明,类外定义;
注意:静态的成员函数没有隐含的this指针参数,所以可以使用类型::作用访问直接调用。
#include<iostream>using namespace std;class Student{public:int i;static int j;//类外声明静态成员变量void set(char*name, int age);//类外声明成员函数private:int _age;char* _name;};void Student::set(char*name, int age)//类外定义成员函数{_age = age;_name = name;}int Student::j;//类外定义静态成员变量int main(){Student s1;s1.j = 10;s1.j++;cout << s1.j << endl;system("pause");return 0;}
类的大小是所有成员变量大小之和。遵循内存对齐规则。
内存对齐规则如图:
位段:
位段:


class AA{};class A{
void print(){;}};class AAA{void print(){;   }void print1(){;}};class AAAA{void print(){;}int a;};
他们的大小分别是1、1、1、4.
因为没有成员变量的时候,系统会分配一个字节大小进行占位。表示存在。
接下来总结类的六大成员函数:构造函数、拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载、const修饰的取地址操作符重载。
1.构造函数
需要对私有成员变量进行初始化,完成这项工作的就是构造函数,构造函数在定义对象的时候自行执行一次。
1>函数名与类名相同。
2>无返回值
3>类定义对象时系统自行调用。
4>构造函数可以重载。
5>构造函数可在类内外定义。
6>没有定义构造函数系统会给一个缺省的构造函数 (不确定性,有时候什么事情都不做),但只要定义了,就不会生成默认的。
7>无参的和全缺省的构造函数都认为是缺省构造函数,并且缺省的构造函数只能有一个。
2.拷贝构造函数
1>拷贝构造是构造的重载。
2>拷贝构造参数必须引用传参,否则会递归无限循环。
3 >若是未定义,系统会默认缺省的。(浅拷贝)
3.析构函数
1>析构函数名称为在类名前面加~;
2>析构函数无参数无返回值。
3 >一个类只有一个析构函数,未定义会生成缺省的析构函数。(缺省的构造函数)
4>类的生命周期结束时会自动调用析构函数,先定义先析构,后定义后析构。
5>析构函数是做清理工作(即释放构造函数所开辟的空间)
4.赋值运算符重载
作用:C++支持运算符重载,为了增强代码的可读性。
特征:
1>(返回类型) operator + 合法的运算符  构成函数名称 (加返回类型是为了支持连续赋值)
2>重载不改变优先级问题。   不改变操作个数。
3>C++不能重载的五个运算符      ?:   \    sizeof    \   ::   \   .   \   .* 
4>已经存在的对象。














阅读全文
0 0
原创粉丝点击