类与对象 C++期末复习 自用

知识掌握的补丁:

1、 this指针相当于成员函数中自带的隐形形参  通过this指针指向成员变量

用到的地方{

1 当成员函数中的对象和类中的对象重名

2 非静态函数返回类对象本身 renturn *this (如运算符重载函数)

}

一、成员函数:

构造函数 在创建对象的时候自动执行 

拷贝函数

浅拷贝

浅拷贝的形参(const类名&)

浅拷贝: 由默认的拷贝构造函数将已有对象的数据成员一一赋值给构造的新对象的数据成员。
缺点:
§ 浅拷贝会带来隐患(数据成员有指针类型时, runtime error
深拷贝

cout<<"构造对象"<<x.name<<"的拷贝"<<endl;
        num = x.num;
        name = new char[strlen(x.name)+8+1];
        strcpy(name,"copy of ");
        strcat(name, x.name);
 

二、特殊成员{

1 对象成员

class X{

类名1 成员1

}

构造函数 这里比较重要 因为构造函数本身不要调用自己 

X::X(全部参数表):成员1(部分参数名1),成员2(部分参数名2),…,成员n(部分参数表3)

2 对象数组

类名 数组名[数组大小]

#include <iostream>
#include <cstring>
using namespace std;

class Student
{
private:
    char name[10];
    int age;
public:
    void assignment(char *n, int a);
    void show();
};

void Student::assignment(char *n, int a)
{
    strcpy(name, n);
    age = a;
}

void Student::show()
{
    cout<<"\t"<<name<<"\t"<<age<<endl;
}

int main()
{
    const int N=100;
    int n, i;
    Student stu[N];
    cout<<"输入学生的人数(不大于100):";
    cin>>n;
    char name[10];
    int age;
    for(i=0;i<n;i++)
    {
        cout<<"输入第"<<i+1<<"个学生姓名和年龄:";
        cin>>name>>age;
        stu[i].assignment(name, age);
    }
    cout<<"\n";
    cout<<"编号\t姓名\t年龄"<<endl;
    for(i=0;i<n;i++)
    {
        cout<<i+1;
        stu[i].show();
    }

    return 0;
}

}

三、静态成员(函数),常函数(成员)

静态数据成员

(引用方式)类名::静态数据成员

1、静态数据成员属于类 

2、内存的分配在程序运行一开始 主函数运行之前 

3、必须在全域初始化

4、

5)对于在类的public部分说明的静态数据成员,可以不使用成员函数而直接访问,格式是:

类名::静态数据成员名

6)在类的外部调用公有静态数据成员和成员函数时,即可以使用”类名::”又可以使用”对象名.”

静态成员函数

(只能访问类的静态数据成员)

常函数

四、友元函数和友元类

可以访问保存还有私人的数据

1)友元的声明可以放在类的私有部分进行也可以放在类的公有部分进行,没有区别。

2)友元函数能访问类的所有成员,一个函数可以是多个类的友元函数,不过需要在各个类中分别声明。

3)友元函数的定义,可以在类的内部也可以在类的外部;友元函数若要对类的成员进行访问,则必须在参数表中显式地指明要访问的对象(不是类成员,没有this指针)。

4C++不允许将构造函数、析构函数和虚函数声明为友元函数。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值