c++面向对象模型---c++如何管理类,对象以及它们之间的联系
首先我们随意定义4个类结构
class cl1
{
private:
int age;
string name;
static int addr;
public:
cl1()
{ }
void iwasthelastlivingsoul()
{ }
int getage()
{
return this->age;
}
}; //32
class cl2
{
private:
int age;
string name;
public:
cl2()
{ }
void iwasthelastlivingsoul()
{ }
int getage()
{
return this->age;
}
};//
class cl3
{
private:
string name;
public:
cl3()
{ }
void iwasthelastlivingsoul()
{ }
int getage()
{
}
};
class cl4
{
private:
string name;
public:
cl4()
{
}
~cl4()
{
}
};
- 主程序
void main()
{
cl1 c1;
cout << sizeof(c1) << endl;
cl2 c2;
cout << sizeof(c2) << endl;
cl3 c3;
cout << sizeof(c3) << endl;
cl4 c4;
cout << sizeof(c4) << endl;
system("pause");
}
输出结果:
32
32
28
28
请按任意键继续. . .
由此可见 string类型占据了28个字节。这是个伟大发现,因为至少我读的C++教材里没有介绍的,哦哈哈哈哈
不信?那再试试
class cl5
{
private:
string name;
string favorite;
public:
cl5()
{
}
~cl5()
{
}
}; void main()
{
cl5 c5;
cout << sizeof(c5) << endl;
system("pause");
}
56
请按任意键继续. . .
言归正传,由cl1和cl2的大小比较 static int静态整型实际上放在了全局变量区而并不占用类声明的空间,而那些成员函数应该就放在代码去了,只有运行时才分配内存
- 不同类对象调用相同成员方法如何做到互不干扰呢
#include<iostream>
#include<string>
using namespace std;
class cl1
{
private:
int age;
string name;
static int addr;
public:
cl1(string name)
{
this->name = name;
}
void iwasthelastlivingsoul()
{
cout << "hello,I'm " <<this->name<< endl;
}
int getage()
{
return this->age;
}
}; void main()
{
cl1 c1("陈培昌");
c1.iwasthelastlivingsoul();
cl1 c2("徐晓冬");
c2.iwasthelastlivingsoul();
cl1 c3("付高峰");
c3.iwasthelastlivingsoul();
system("pause");
}
输出结果:
hello,I'm 陈培昌
hello,I'm 徐晓冬
hello,I'm 付高峰
请按任意键继续. . .
这是由于C++类中,普通成员函数包含一个指向具体对象的指针,而静态成员函数不包括。
静态成员变量和静态成员函数属于类(而不是对象),静态成员函数不含指向具体对象的指针
c++面向对象模型---c++如何管理类,对象以及它们之间的联系的更多相关文章
- models管理类抽取基类
Models类 models.py # coding:utf-8 from django.db import models from db.Base_model import Base_Model f ...
- [类和对象]3 C++面向对象模型初探
? C++编译器如何完成面向对象理论到计算机程序的转化? [C++编译器是如何管理类.对象.类和对象之间的关系] 通过下面的代码,我们可以的得出:C++类对象中的成员变量和成员函数是分开存储的 成员变 ...
- c++面向过程和面向对象-C++编译器是如何管理类和对象的
1,c++编译时如何区分对象调用类的方法? C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代 ...
- PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)(转)
面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...
- 八、面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)
面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...
- python类与对象-如何创建可管理的对象属性
如何创建可管理的对象属性 问题举例 在面向对象编程中, 我们把方法看作对象的接口, 直接访问对象的属性可能是不安全的,或设计上不够灵活. 但是使用调用方法在形式上不如访问属性简洁. circle.ge ...
- C++编译器是如何管理类和对象的,类的成员函数和成员变量
C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代码段(代码区内存)构成. #include ...
- 【Unity3D游戏开发】之全局管理类的几种方式 (十六)
如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别. 第一种方式是使用静态类.适合存储一些全局的变量,如游戏当前关卡.玩家得分等 ...
- PowerDesigner 面向对象模型(OOM)
PowerDesigner 面向对象模型(OOM)说明 nulljavasystemstringpowerbuilderclass 目录(?)[+] 一. OOM 简介 Object- ...
随机推荐
- PAT(B) 1078 字符串压缩与解压(Java)
题目链接:1078 字符串压缩与解压 (20 point(s)) 题目描述 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示 ...
- 使用Docker搭建svn服务器教程
svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subv ...
- python正则表达式findall的使用
文章来源与:http://www.cnblogs.com/zjltt/p/6955965.html 正则表达式 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模 ...
- Springboot模板(thymeleaf、freemarker模板)
目的: 1.thymeleaf模板 2.Freemarker模板 thymeleaf模板 thymeleaf 的优点: 支持html5标准,页面无须部署到servlet开发到服务器上,直接通过浏览器就 ...
- Liar CodeForces - 822E (dp,后缀数组)
大意: 给定串$s,t$, 给定整数$x$, 求判断$t$是否能划分为至多$x$段, 使这些段在$s$中按顺序,不交叉的出现. 设$dp_{i,j}$表示$s$匹配到$i$位, 划分了$j$段, 匹配 ...
- 杭电2577 多数组dp问题
Problem Description Pirates have finished developing the typing software. He called Cathy to test hi ...
- MVC模式下unity配置,报错“No connection string named '**Context' could be found in the application config file”
写在前面: 第一次配置时好好的,后来第二次改到MVC模式,把依赖注入写成字典的单例模式时,由于新建的ORM(数据库映射模型EF),怎么弄都不用,一直报错"No connection str ...
- 关闭ShowDialog的模态窗口
[DllImport("user32.dll")] private static extern IntPtr FindWindow(string a, string b); [Dl ...
- 海量数据处理的 Top K 相关问题
Top-k的最小堆解决方法 问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数.(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据:(2)只要前K个,对 ...
- CSS_引入方式
一 CSS的引入方式 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离 1.行内式 ...