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 viewController添加导航条以及返回跳转选择
给单独的viewcontroller或者在Appdelegate的主页面添加导航条,只要在viewcontroller上添加navigationcontroller,在添加此navigationcon ...
- aliyun 主机Nginx 上配置Drupal 伪静态
网上找了好久没有正确的,后面直接在http://wiki.nginx.org/Drupal 上找到原文.但原文中复制过来会出现个 'root' rewrite directive is duplica ...
- [置顶] JNI之java传递数据给c语言
1.首先创建 DataProvider类: package com.pl.ndkpassdata; public class DataProvider { static{ System.loadLib ...
- 仿StackOverflow开发在线问答系统
仿StackOverflow开发在线问答系统 [第二期11月9日开课]使用Python Flask Web开发框架实现一套类似StackOverflow的在线问答平台LouQA,具备提问,回答,评论点 ...
- [WPF源代码]QQ空间相册下载工具
放一个WPF源代码,源代码地址 http://download.csdn.net/detail/witch_soya/6195987 代码没多少技术含量,就是用WPF做的一个QQ空间相册下载工具,效果 ...
- [置顶] Oracle 11g ASM:如何在 ASMCMD 命令行工具中创建 Oracle ACFS 文件系统
实验环境:Oracle 11g R2 RAC (11.2.0.3.5) Oracle Enterprise Linux 5.6 x86 1.创建 ASM 磁盘组 在两节点 ...
- Java 螺纹第三版 第三章数据同步 读书笔记
多线程间共享数据问题 一.Synchronizedkeyword atomic一词与"原子"无关,它以前被觉得是物质的最小的单元,不能再被拆解成更小的部分. 当 ...
- easyUI相关知识
$("#sportGroupInfoDialog").dialog("open");//打开一个对话框,设置这个对话框的的布局方式 $('#sportGroup ...
- IE 下使用firebug
javascript :var firebug=document.createElement('script');firebug.setAttribute('src','http://getfireb ...
- 查看ORACLE事务隔离级别方法(转)
众所周知,事务的隔离级别有序列化(serializable),可重复读(repeatable read),读已提交(read committed),读未提交(read uncommitted).根据隔 ...