访问限制
Private只有成员函数可以访问
注意:本笔记来自网易云课堂学习
class A
{
public:
A();
~A();
void g(A*);
void set(int);
private:
int i;
int c;
#include<iostream>
using namespace std;
A::A()
{
A::~A()
{
}
void A::g(A * q)
{
cout << q->i << endl;//同一个类的私有变量可以访问!
}
{
i = ii;
}
int main()
{
A *p = new A[10];//开辟一个空间10个对象
for (int i = 0; i < 10;i++)
{
p[i].set(i);//这里p就相当于数组的名字,首地址
}
b.set(100);//将b中的变量i设置成100
return 0;
}
Friend是在类中声明,那个声明的那个函数或者类,可以访问这个类的私有成员。
struct X;
Struct Y(X*)//这里必须是X*不能是X c 不然就绕不出来了
{
}
Struct X{
Private:
Int I;
Public:
Friend void Y::f(X*)
}
Struct 和class 的区别
如果没有private ,那么struct默认为是public;而class 默认为是private;
如果类很简单只有几个数字,可以用struct,其他用class
初始化
初始化变量的值可以在初始化函数中
也可以在初始化函数名后加:给出值例如:
A():i(0){ }
还例如:
class point
{
private:
const float x,y;
point (float xa=0.0,ya=0.0):x(xa),y(ya)//构造函数
{ }
}
这样实际上,x,y的赋值要早于构造函数
建议初始化都在构造函数前,不然可能找不到初始化函数
对象组合
把已有的对象组合来实现软件重用
用对象来制造对象
定义的类person和currency是savingsaccount的成员变量
fully(上面例子中的直接的引用)
reference(使用指针)
要对包含的这两个类都初始化
构造函数SavingAccount::SavingAccuount(constchar* name,const* char*address,int cents)
:m_saver(name),m_balance(0,cents){ }
如果把person类型的对象,定义在public中,那么就相当于外界可以访问内部的量。
例如:savingaccount A;//person中有set_name函数
A.person.set_name(“lily”)