C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点,但是这些 优点的背后都隐藏着一些隐患。正如人们的饮食,少食和暴食都不可取,应当恰到好处。 我们要辨证地看待 C++的新机制,应该恰如其分地使用它们。

虽然这会使我们编程时多 费一些心思,少了一些痛快,但这才是编程的艺术。

 #include <iostream>

 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
//定义一个包含指针成员的结构类型
struct test {
char *str;
int *ip;
} x; //使用结构变量x中的整型指针ip
x.ip=new int; //分配1个单元
*(x.ip)=;
cout<<"x.ip:"<<x.ip<<'\t'<<*(x.ip)<<endl;
cout<<"---------------"<<endl;
delete x.ip;
x.ip=new int[]; //分配5个单元
for(int i=;i<;i++)
*(x.ip+i)=+i;
cout<<"x.ip:"<<endl;
for(int i=;i<;i++)
cout<<x.ip+i<<'\t'<<(*(x.ip+i))<<endl;
delete x.ip;
cout<<"---------------"<<endl; //使用结构变量x中的字符型指针str
x.str=new char('A'); //分配1个单元
cout<<"x.str:"<<(*x.str)<<endl;
cout<<"---------------"<<endl;
delete x.str;
x.str=new char[]; //分配多个单元
*x.str='G';
*(x.str+)='o';
*(x.str+)='o';
*(x.str+)='d';
*(x.str+)='\0';
cout<<"x.str:"<<x.str<<endl;
delete x.str;
cout<<"---------------"<<endl; //在声明结构变量时初始化
test y={"Very Good!",NULL};
cout<<"y.str:"<<y.str<<endl;
cout<<"y.ip:"<<y.ip<<endl;
return ;
}

C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点的更多相关文章

  1. 关于isNAN()函数内进行的莫名其妙的隐式转换?!

    isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true); // false isNaN(null); ...

  2. Scala 中的隐式转换和隐式参数

    隐式定义是指编译器为了修正类型错误而允许插入到程序中的定义. 举例: 正常情况下"120"/12显然会报错,因为 String 类并没有实现 / 这个方法,我们无法去决定 Stri ...

  3. 位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数

    update 2014-05-17 一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位(与0位与) ...

  4. ARM嵌入式开发中的GCC内联汇编__asm__

    在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择.但如果完全通过汇编代码实现,又会过于复杂.难以调试.因此,C语言内嵌汇编的方式 ...

  5. Access中多表内联的SQL写法

    在Access中多表内联,可以使用传统的where条件逐行筛选,如: SELECT SNAME,CNAME,DEGREE FROM STUDENT,COURSE,SCORE where student ...

  6. Java中的方法内联

    Java中的方法内联 1. 什么是方法内联 例如有下面的原始代码: static class B { int value; final int get() { return value; } } pu ...

  7. 【校招面试 之 C/C++】第18题 C++ 中的隐式转换以及explicit关键字

    1.什么是隐式转换: 众所周知,C++的基本类型中并非完全的对立,部分数据类型之间是可以进行隐式转换的. 所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为.很多时候用户可能都不知道进行了 ...

  8. js中的数据类型隐式转换的三种情况

    js的数据类型隐式转换主要分为三种情况: 1. 转换为boolean类型 2. 转换为number类型 3. 转换为string类型 转换为boolean类型 数据在 逻辑判断 和 逻辑运算 之中会隐 ...

  9. null的坑 和 比较运算符、相等运算符的隐式转换问题 (在javascript中,null>=0 为真,null<=0 为真,null==0却为假,null到底是什么?)

    null在关系运算中的坑 & 关系运算符的隐式转换问题 注意: 比较运算符 和 相等运算符 的 ECMAscript 语法实现不同. 比较运算符 和 相等运算符 对数据进行了隐式转换, 相当于 ...

随机推荐

  1. Sublime Text 无法使用Package Control或插件安装失败的解决方法

    Sublime Text用了一年多了,公司搬家近期突然发现Package Control无法安装新插件了.尽管不影响原有功能的使用.还是要解决它.因为本人用Windows系统,仅仅讨论Windosw下 ...

  2. mysql 5.7安装教程

    一.mysql下载地址  https://downloads.mysql.com/archives/installer/ 说在前面的话 我为什么已经尝试和使用过同类型产品的很多MySQL版本,还要书写 ...

  3. vim:隆重推荐括号补全插件--auto-pairs

    太好用了,括号相关的各种麻烦都一一解决,剩下的就是熟练,熟练,在熟练了.呵呵 连教程都做得这么好,先放这里,以后慢慢翻译. Auto Pairs Insert or delete brackets, ...

  4. XILINX XST综合的选项的含义

    所谓综合,就是将HDL语言.原理图等设计输入翻译成由与.或.非门和RAM.触发器等基本逻辑单元的逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接,生成EDF文件.完成了输入.仿真以及 ...

  5. [svc][op]磁盘Inode详解-重要

    另一篇白话总结 一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB ...

  6. feginclient和ribbon的重试策略

    //自定义重试次数// @Bean// public Retryer feignRetryer(){// Retryer retryer = new Retryer.Default(100, 1000 ...

  7. VC++ 目录选择对话框

    打开目录选择对话框要使用到API函数SHBrowseForFolder来实现 函数原型为: LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi); 其中L ...

  8. 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈

    http://www.cnblogs.com/myblesh/archive/2012/04/07/2435737.html 之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈. ...

  9. 更改datatables的分页切换时的'processing'提示信息的式样

    jquery.dataTables.css .dataTables_wrapper .dataTables_processing { position: absolute; top: 50%; lef ...

  10. rpm信息查看

    rpm -qpi xxx.rpm #查看rpm包相关信息,一般有版本,build日期,功能描述,大小,公司等等 rpm -qpl xxx.rpm  #查看rpm包含安装的目录和文件 rpm -qpc ...