知识掌握的补丁:
1、 this指针相当于成员函数中自带的隐形形参 通过this指针指向成员变量
用到的地方{
1 当成员函数中的对象和类中的对象重名
2 非静态函数返回类对象本身 renturn *this (如运算符重载函数)
}
一、成员函数:
构造函数 在创建对象的时候自动执行
拷贝函数
浅拷贝
浅拷贝的形参(const类名&)
深拷贝
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指针)。
(4)C++不允许将构造函数、析构函数和虚函数声明为友元函数。