C++学习5访问限制、初始化、对象组合

原创 2018年04月15日 16:37:00

访问限制

Private只有成员函数可以访问

注意:本笔记来自网易云课堂学习

例子:
#pragma once
class A
{
public:
 A();
 ~A();
 void g(A*);
 void set(int);
private:
 int i;
 int c;
};

 

#include "A.h"
#include<iostream>
using namespace std;

A::A()
{
}

A::~A()
{
}
void A::g(A * q)
{
 cout << q->i << endl;//同一个类的私有变量可以访问!
}
void A::set(int ii)
{
 i = ii;
}
#include "A.h"
int main()
{
 A *p = new A[10];//开辟一个空间10个对象
 for (int i = 0; i < 10;i++)
 {
  p[i].set(i);//这里p就相当于数组的名字,首地址
 }
 A b;
 b.set(100);//将b中的变量i设置成100
 p[0].g(&b);//将p[0]的i设置成b中的i的值。
 delete[] p;//有new就要有delete
 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”)

自定义控件教程——组合已有组件

剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的组合已有组件的方法
  • 2017年03月10日 17:07

C++中类的组合与构造函数

首先看看构造函数的概念。在程序执行过程中,当遇到对象声明语句时,程序会想操作系统申请一定的内存空间用于存放新建的对象。而编译器不知道如何产生代码来实现初始化。所以C++做了一套对象初始化的机制,就是构...
  • waiting_someone
  • waiting_someone
  • 2016-07-20 15:29:17
  • 1477

C++中组合和继承的初始化

在C++中单个类的初始化比较简单就略过不说。 当一个类继承了另外一个类,或者是一个类中还存在一个类   class A{ 、、、 }; class B { 、、、 }; class...
  • zhouyelihua
  • zhouyelihua
  • 2014-08-13 21:35:04
  • 2935

C++之类的组合(聚合)

在我们对现实中的某些事物抽象成类时,可能会形成很复杂的类,为了更简洁的进行软件开发,我们经常把其中相对比较独立的部分拿出来定义成一个个简单的类,这些比较简单的类又可以分出更简单的类,最后由这些简单的类...
  • sinat_20265495
  • sinat_20265495
  • 2016-06-23 23:23:40
  • 1908

C++ 组合类

组合类:一个类里面的数据成员是另一个类的对象,即内嵌其他类的对象作为自己的成员。 创建组合类的对象:首先创建各个内嵌对象,难点在于构造函数的设计。创建对象时既要对基本类型的成员进行初始化,又要对内嵌...
  • ForestRound
  • ForestRound
  • 2016-10-03 08:58:20
  • 6816

C++ 如何突破private成员的访问限制

c++中类的private成员对外是不可见的,以下方法可以突破private成员的访问权限。 // accessPrivateMember.h class A { private:   ...
  • u010318270
  • u010318270
  • 2017-11-24 09:46:56
  • 115

C++中对象初始化方式

当对象在创建时获得了一个特定的值,我们说这个对象被初始化。初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代。 对象初始化可以分为默认初始化...
  • yang20141109
  • yang20141109
  • 2015-12-21 21:32:43
  • 3901

类内组合的对象用初始化列表 效率要高些

#include using namespace std; class Engine { public: Engine() { cout
  • konga
  • konga
  • 2012-12-29 09:08:38
  • 1049

对象与类(三):类的组合

类组合的构造函数调用 ×构造函数调用的顺序:先调用内嵌对象的构造函数(按内嵌时 类的声明顺序,先声明者先构造)。然后调用本类的构造函数。 (析构函数的调用顺序相反) ×若调用缺省构造函数(即无...
  • a1037488611
  • a1037488611
  • 2014-05-19 15:31:15
  • 1035

golang中匿名组合

包含与匿名组合1.匿名组合1.1 匿名组合定义 golang中组合语法,就是在一个类中,引入了另一个类,如 type Logger struct{ } type Work st...
  • hzwy23
  • hzwy23
  • 2017-02-25 11:59:48
  • 6991
收藏助手
不良信息举报
您举报文章:C++学习5访问限制、初始化、对象组合
举报原因:
原因补充:

(最多只允许输入30个字)