栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

类与对象(一)

C/C++/C# 更新时间:发布时间: 百科书网 趣学号
一、类的定义

C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。

C++同时对struct进行了升级,把struct 升级成了类

1、结构体名称可以做类型

2、里面可以定义函数

//结构体的定义,在C++中更喜欢用class来代替
class U
{
	int a;
	char b;
	int add(int x, int y)
	{
		return x + y;
	}
};
class 为 定义类的关键字, 类中的元素称为 类的成员: 类中的 数据 称为 类的属性 或者 成员变量 ; 类中的 函数 称为 类的方法 或者 成员函数。
  • 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它
  • 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
1.1 类的两种定义方法 1.1.1 声明和定义全部放在类体中
class U
{
public:
	int a;
	char b;
	int add(int x, int y)
	{
		return x + y;
	}
};
成员函数如果在类中定义,编译器可能会将其当成内联函数处理 1.1.2 声明定义分开,声明放在.h文件中,类的定义放在.cpp文件中

Func.h

class U
{
public:
	int a;
	char b;

	//在类里面定义的函数,默认是inline,内联函数
	int mul(int x, int y)
	{
		return x * y;
	}

	//在类里面声明,在.cpp里面定义
	int Add(int x, int y);
	int Sub(int x, int y);
};

Func.cpp

#include "Func.h"

//用'::'符号进行访问
int U::Add(int x, int y)
{
	return x + y;
}

int U::Sub(int x, int y)
{
	return x - y;
}

实际中,短小函数可以直接在类里面定义, 长一点函数声明和定义分离

一般情况定义和声明分开更好


二、类的访问限定符 2.1 访问限定符

1.public(共有)     2.private(私有)     3.protected(保护)

访问限定符使用:

  • public修饰的成员在类外可以直接被访问
  • protected和private修饰的成员在类外不能直接被访问(protected和private是类似的)
  • 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
  • class的默认访问权限为private,struct为public(因为struct要兼容C),两者相反
    class U
    {
    public:
    	int Add(int x, int y)
    	{
    		return x + y;
    	}
    private:
    	int a;
    	int b;
    	int c;
    };

三、类的作用域 类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。
class U
{
public:
	int Add(int x, int y);
private:
	int a;
	int b;
	int c;
};

int U::Add(int x, int y)
{
	return x + y;
}

四、类的大小

类对象的存储方式:只保存成员变量,成员函数存放在公共的代码段

//大小:16字节
class A
{
public:
	int Add(int x, int y)
	{
		return x + y;
	}
private:
	int a;
	char b;
	double c;
};

//大小:16字节
class B
{
public:
	int a;
	char b;
	double c;
};

//大小:1字节
class C
{
public:
	int Add(int x, int y)
	{
		return x + y;
	}
};
一个类的大小,实际就是该类中”成员变量”之和,当然也要进行内存对齐( 结构体内存对齐规则 ),注意空类( 成员只有函数 )的大小,空类比较特殊,编译器给了空类 一个字节 来唯一标识这个类。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/889415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号