c vs c++ in strcut and class
总习惯用c的用法,现在学习C++,老爱拿来比较。声明我用的是g++4.2.1 SUSE Linux。看例子吧
- #include <iostream>
- #include <cstring>
- #include <string>
- using namespace std;
- enum zoo_obj_kind{
- null = 0,
- #define null null
- no = 0,
- #define no no
- animal = 2,
- #define animal animal
- plant = 4,
- #define plant plant
- others = 8
- #define others others
- };
- struct zoo_obj{
- zoo_obj_kind zo_kind;
- char name [40];
- };
- class zoo_obj_1{
- zoo_obj_kind zo_kind;
- char name [40];
- };
- int main(void){
- cout << "struct :" << sizeof(struct zoo_obj) << endl;
- cout << "clsas :" << sizeof( zoo_obj_1) << endl;
- }
- struct size:44
- clsas size:44
- #include <iostream>
- #include <cstring>
- #include <string>
- using namespace std;
- enum zoo_obj_kind{
- null = 0,
- #define null null
- no = 0,
- #define no no
- animal = 2,
- #define animal animal
- plant = 4,
- #define plant plant
- others = 8
- #define others others
- };
- struct zoo_obj{
- zoo_obj_kind zo_kind;
- char name [40];
- void (*say)(struct zoo_obj *);
- };
- void say(struct zoo_obj *obj){
- if(!obj) {
- printf("null\n");
- return ;
- }
- printf("name:%s\n",obj->name);
- }
- class zoo_obj_1{
- zoo_obj_kind zo_kind;
- char name [40];
- void say(zoo_obj_1 &obj){
- cout << "name:" << name << endl;
- }
- };
- int main(void){
- cout << "struct :" << sizeof(struct zoo_obj) << endl;
- cout << "clsas :" << sizeof( zoo_obj_1) << endl;
- }
- struct size:48
- clsas size:44
- #include <iostream>
- #include <cstring>
- #include <string>
- using namespace std;
- enum zoo_obj_kind{
- null = 0,
- #define null null
- no = 0,
- #define no no
- animal = 2,
- #define animal animal
- plant = 4,
- #define plant plant
- others = 8
- #define others others
- };
- struct zoo_obj{
- zoo_obj_kind zo_kind;
- char name [40];
- void (*say)(struct zoo_obj &);
- };
- void say(struct zoo_obj &obj){
- printf("name:%s\n",obj.name);
- }
- class zoo_obj_1{
- public:
- zoo_obj_kind zo_kind;
- char name [40];
- void say(){cout << "name:" << name << endl;}
- void say(zoo_obj_1 &obj){cout << "name:" << obj.name << endl;}
- };
- typedef struct zoo_obj s_zoo_obj;
- typedef zoo_obj_1 c_zoo_obj;
- int main(void){
- s_zoo_obj s_obj = {animal,"dog",say};
- zoo_obj_1 c_obj = {animal,"cat"};
- cout << "struct size:" << sizeof(struct zoo_obj) << endl;
- cout << "clsas size:" << sizeof( zoo_obj_1) << endl;
- s_obj.say(s_obj);
- c_obj.say(c_obj);
- }
- struct size:48
- clsas size:44
- name:dog
- name:cat
- #include <iostream>
- #include <cstring>
- #include <string>
- using namespace std;
- enum zoo_obj_kind{
- null = 0,
- #define null null
- no = 0,
- #define no no
- animal = 2,
- #define animal animal
- plant = 4,
- #define plant plant
- others = 8
- #define others others
- };
- struct zoo_obj{
- zoo_obj_kind zo_kind;
- char name [40];
- void (*say)(struct zoo_obj *);
- };
- void say(struct zoo_obj *obj){
- !obj
- ? printf("null\n")
- : printf("name:%s\n",obj->name);
- }
- class zoo_obj_1{
- public:
- zoo_obj_kind zo_kind;
- char name [40];
- void say(){cout << "name:" << name << endl;}
- void say(zoo_obj_1 *obj){
- !obj
- ? cout << "null\n"
- : cout << "name:" << obj->name << endl;
- }
- };
- typedef struct zoo_obj s_zoo_obj;
- typedef zoo_obj_1 c_zoo_obj;
- int main(void){
- s_zoo_obj s_obj = {animal,"dog",say};
- zoo_obj_1 c_obj = {animal,"cat"};
- cout << "struct size:" << sizeof(struct zoo_obj) << endl;
- cout << "clsas size:" << sizeof( zoo_obj_1) << endl;
- s_obj.say(&s_obj);
- c_obj.say(&c_obj);
- s_obj.say(NULL);
- c_obj.say(NULL);
- }
- struct size:48
- clsas size:44
- name:dog
- name:cat
c vs c++ in strcut and class的更多相关文章
- golang基础--strcut结构体
结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法. // struct结构体,类似python语言中的clas ...
- go strcut 封装
package model import "fmt" type person struct { Name string age int //其它包不能直接访问.. sal floa ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(41)-组织架构
系列目录 本节开始我们要实现工作流,此工作流可以和之前的所有章节脱离关系,也可以紧密合并. 我们当初设计的项目解决方案就是可伸缩可以拆离,可共享的项目解决方案.所以我们同时要添加App.Flow文件夹 ...
- Linux C++中的时间函数(转)
http://net.pku.edu.cn/~yhf/linux_c/function/03.html asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime ...
- 33个超级有用必须要收藏的PHP代码样例
作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...
- [汇编与C语言关系]3. 变量的存储布局
以下面C程序为例: #include <stdio.h> ; ; ; int c; int main(void) { ; char b[] = "Hello World" ...
- C库函数使用与总结之时间函数
1. localtime(取得当地目前时间和日期) [头文件]#include <time.h> [函数原型]struct tm *localtime(const time_t * tim ...
- 一个asp采集程序
<% if request.QueryString="" then url="http://www.hbcz.gov.cn:7001/XZQHQueryWAR/xx ...
- 接触Matlab5年一个总结(Matlab要掌握的一些要点 )
阅读目录 前言 Matlab的开发环境与简单介绍 Matlab的常见命令 Matlab的灵魂-矩阵操作 Matlab的.m或.fig的编程与技巧 从大二开始接触到matlab,讲真,这是一个我觉得很良 ...
随机推荐
- IOS 获取网络图像尺寸 更改 图像色彩值 什么一套方法灰色
直接在代码 头文件 // 图片处理 0 半灰色 1 灰度 2 深棕色 3 反色 +(UIImage*)imageWithImage:(UIImage*)image grayLevelType:(UII ...
- stm32之CAN总线基础
can总线协议概述: CAN是Controller Area Network的缩写,由德国博世公司开发:CAN通过ISO11891以及ISO11519进行了标准化: CAN总线的特点: 1.多 ...
- 关于JSP post请求乱码的问题
解决用户请求页面乱的问题 1. 修改apache下的config文件夹下的server.XML文件 <Connector connectionTimeout="20000" ...
- 嵌入式环境:挂载开发板根NFS文件系统失败
挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...
- 【转】Lua脚本语法说明简介
Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得怎么写Lua程序了. 在Lua中,一切都是变量, ...
- NSString和NSDate的转换
输入的日期字符串形如:@"1992-05-21 13:08:08" - (NSDate *)dateFromString:(NSString *)dateString{ NSDat ...
- Android学习笔记:ActionBar使用介绍
一.基本概念 最权威和官方的介绍请看google的api文档 http://developer.android.com/training/basics/actionbar/setting-up.htm ...
- solr4.x设置默认查询字段
1.如果需要同时在title和content中进行查询,可以添加如下字段: <field name="title_content" type="textComple ...
- grunt 前端开发环境搭建
1.找管理员开通gitlab权限 2.下载并安装git工具 3.下载并安装nodejs 4.安装cnpm 5.安装kulor-cli cnpm install -g kulor-cli cnpm in ...
- 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...