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,讲真,这是一个我觉得很良 ...
随机推荐
- hdu 4975 A simple Gaussian elimination problem.(网络流,推断矩阵是否存在)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4975 Problem Description Dragon is studying math. One ...
- fragment的切换
1.视图 1)主视图 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- Cocos2D-X扫盲之坐标系、锚点
一.引言 在Cocos2D-X的开发过程中,经常会碰到设置精灵位置的问题.而设置位置的过程,涉及到两个问题:第一是坐标系,包括原点的位置.X/Y坐标轴的方向灯:第二是基准点(Cocos2D-X中叫锚点 ...
- 解决项目打包过程检出项目出现 svn:e15500错误
svn:E15500 is already a working copy for a different url 原因:文件夹含有svn信息的隐藏文件未删除 解决办法:把该文件夹删除掉,然后重新建立同 ...
- Qt新建线程的方法(有QRunnable,QThreadPool,moveToThread和QtConcurrent的例子)
看了不少Qt线程的东西,下面总结一下Qt新建一个线程的方法. 一.继承QThread 继承QThread,这应该是最常用的方法了.我们可以通过重写虚函数void QThread::run ()实现我们 ...
- 分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小
原文:分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小 /** * Reallocates an array with a new size, and copies the co ...
- Windows8下通过IPv4地址访问Tomcat
最近在做Android开发,手机客户端需要通过IPv4地址访问电脑启动的Web应用服务. 在Windows 7不需要做什么设置,localhost,127.0.0.1或者192.168.0.100都可 ...
- mysql 监控 大批量的插入,删除,和修改
监控大批量的插入,修改和删除: mysql> insert into aaa select * from aaa; mysql> SELECT trx_id, trx_state, trx ...
- android代码控制seekbar的样式
package com.zte; import android.app.Activity; import android.graphics.Color; import android.graphics ...
- 如何捕获Wince下form程序的全局异常
前言 上两篇文章我们总结了在winform程序下如何捕获全局的异常.那么同样的问题,在wince下我们如何来处理呢?用相同的代码来处理可以吗? 答案是否定的,上面的方案1完全不能解决wince下的情况 ...