C++语法小tips(未完待续)
2011-08-28 22:54
309 查看
之前发现写C++程序时候,知道怎么写代码,却不知道为什么如此。确实高级语言无非是一些语法的应用。计算机世界里面的高级语言犹若过江之鲤。真正想去研究每一种语言是不大可能的。所以我们应该慎重的选择几种语言,融会贯通。为自己将来的工作事业。做准备。个人认为汇编是一定要学的,其次就是c语言。在学一种面向对象的语言比如C++ 或者是Java。不过c++与java是很接近的。特别是学了c++以后再学习java 。在好好的研究一下编译原理。你的计算机语言会是一条康庄大道的呃!O(∩_∩)O~
下面简单说一些c++易错的语法。
1. 计算机可能会因为由于没有足够的内存而无法满足new的请求。在这种情况下new将返回0
2.重载函数的参数个数或类型至少有一个不痛
3.一个函数不能即作为冲在函数,又作为有默认参数的函数由此会产生二义性
4,对变量声明的一个引用,并不另外开辟内存单元。在声明一个引用的时候,必须同时使之初始化。即声明它代表哪一个变量由于引用不是独立的变量编译系统不会给它单独分配存储单元。因此在建立引用的 时候。只有声明没有定义。只是声明它和原有的某一个变量的关系
5.C++程序设计者的任务:1.设计所需的类和对象,即决定吧哪些数据和操作过程封装在一起。2.考虑怎样向有关的对象发送消息,一完成所需要的任务。
6.类是由结构体延伸出来的。但是类的数据或者函数未指名其属性的时候默认的是private而struct默认的是public
7.c++要求对一般的内置函数用关键字inline声明,但是对类内定义的成员函数,可以省略inline。因为这些成员函数已被隐含的指定为inline。类外定义时候不可以省略。如果是在类外定义inline函数那注意了:则必须吧类定义和成员函数的定义都放在同一个头文件中,或写在同一个源文件中。(之前用visual studio2008 就经常犯这种错误)否则的话编译时候无法进行置换即将函数代码拷贝嵌入带函数调用点。但是这样做不利于类的接口与类的实现的分离。不利于信息的隐藏。虽然程序的执行效率提高了。但是从软件工程的角度看这种做法是不可取的呃!
8.一个对象所占有的空间大小只取决于对象数据成员所占有的空间,而与成员函数没有关系。函数代码存储在对象空间之外的,C++为函数代码分配了一个this指针用来指向不同的对象。
9.类的数据成员是不能在声明类的时候初始化的。因为类并不是一个实体,二十一中头像类型。并不占有存储空间,显然不能容纳数据。但是此处要和构造函数的初始数据区别开来的呃!
10.在类对象进入其作用域时候调用构造函数,构造函数没有返回值,因此构造函数不要声明类型。构造函数不允许用户直接调用的。构造函数是系统自动执行的,而且只能执行一次的构造函数一般为public
11.定义指向公用成员函数的指针变量是一般形式
数据类型名(类名::* 指针变量名)(参数列表)
注意和c语言中指向函数的指针定义区别开来
函数类型名(*指针变量名)(参数列表)
12.this指针是隐式使用的。他是作为参数的被传递给成员函数。但是这是编译系统自动实现的。编程者不必人为的在形参之中增加this指针
13.长对象中的数据成员且必须在定义时候给出初始值,
定义常对象的形式
类名 const 对象名[(实参列表)]或const 类名 对象名[(实参列表)]
一般不能调用常对象中的非const型的成员函数(除了心痛自动调用的隐式的构造函数和西沟函数)。只有长成员函数可以访问常对象中的数据成员,但是仍不允许修改常对象中的数据成员,孱弱一定要修改常对象中的某个数据成员,则必须声明为mutable 并使用const成员函数来修改它。
14.编译系统是以源文件为单位的。当涉及几个源文件之间的关系时候,只有借助于link 和运行了。
15.只能通过构造函数的参数初始化表对常数据成员进行初始话。不能采用在构造函数中队常数据成员进行初始化。因为场数据成员是不能被赋初值的。
16.重载运算符的规则:
1.C++不允许用户定义新的运算符,只能是对已有的运算符进行重载
2.重载在不能改变运算符的操作个数这也决定了重载不能有默认的操作数
3.重载在不能改变运算符的优先级、结合性
4.重载的运算符必须和用户自定义的类型的对象一起使用。其参数至少应该有一个是类对象(或者是类引用)参数不能全是标准的类型,以防止用户修改用于标准型数据的运算符性质.、。说到这倒是想起MASM汇编中的宏定义如果和指令相同的话,则执行宏汇编
5.应当使重载的运算符的功能类似运算符的原义
6.针对"++"和"- -"既可以看成是前置运算符和后置运算符的运算符,c++约定如果在自增或者是自减运算符中增加一个int类型的话。那么她就是后置的了
7."<<" ">>" 只能重载为友元函数或者是普通函数
下面简单说一些c++易错的语法。
1. 计算机可能会因为由于没有足够的内存而无法满足new的请求。在这种情况下new将返回0
2.重载函数的参数个数或类型至少有一个不痛
3.一个函数不能即作为冲在函数,又作为有默认参数的函数由此会产生二义性
4,对变量声明的一个引用,并不另外开辟内存单元。在声明一个引用的时候,必须同时使之初始化。即声明它代表哪一个变量由于引用不是独立的变量编译系统不会给它单独分配存储单元。因此在建立引用的 时候。只有声明没有定义。只是声明它和原有的某一个变量的关系
5.C++程序设计者的任务:1.设计所需的类和对象,即决定吧哪些数据和操作过程封装在一起。2.考虑怎样向有关的对象发送消息,一完成所需要的任务。
6.类是由结构体延伸出来的。但是类的数据或者函数未指名其属性的时候默认的是private而struct默认的是public
7.c++要求对一般的内置函数用关键字inline声明,但是对类内定义的成员函数,可以省略inline。因为这些成员函数已被隐含的指定为inline。类外定义时候不可以省略。如果是在类外定义inline函数那注意了:则必须吧类定义和成员函数的定义都放在同一个头文件中,或写在同一个源文件中。(之前用visual studio2008 就经常犯这种错误)否则的话编译时候无法进行置换即将函数代码拷贝嵌入带函数调用点。但是这样做不利于类的接口与类的实现的分离。不利于信息的隐藏。虽然程序的执行效率提高了。但是从软件工程的角度看这种做法是不可取的呃!
8.一个对象所占有的空间大小只取决于对象数据成员所占有的空间,而与成员函数没有关系。函数代码存储在对象空间之外的,C++为函数代码分配了一个this指针用来指向不同的对象。
9.类的数据成员是不能在声明类的时候初始化的。因为类并不是一个实体,二十一中头像类型。并不占有存储空间,显然不能容纳数据。但是此处要和构造函数的初始数据区别开来的呃!
10.在类对象进入其作用域时候调用构造函数,构造函数没有返回值,因此构造函数不要声明类型。构造函数不允许用户直接调用的。构造函数是系统自动执行的,而且只能执行一次的构造函数一般为public
11.定义指向公用成员函数的指针变量是一般形式
数据类型名(类名::* 指针变量名)(参数列表)
注意和c语言中指向函数的指针定义区别开来
函数类型名(*指针变量名)(参数列表)
12.this指针是隐式使用的。他是作为参数的被传递给成员函数。但是这是编译系统自动实现的。编程者不必人为的在形参之中增加this指针
13.长对象中的数据成员且必须在定义时候给出初始值,
定义常对象的形式
类名 const 对象名[(实参列表)]或const 类名 对象名[(实参列表)]
一般不能调用常对象中的非const型的成员函数(除了心痛自动调用的隐式的构造函数和西沟函数)。只有长成员函数可以访问常对象中的数据成员,但是仍不允许修改常对象中的数据成员,孱弱一定要修改常对象中的某个数据成员,则必须声明为mutable 并使用const成员函数来修改它。
14.编译系统是以源文件为单位的。当涉及几个源文件之间的关系时候,只有借助于link 和运行了。
15.只能通过构造函数的参数初始化表对常数据成员进行初始话。不能采用在构造函数中队常数据成员进行初始化。因为场数据成员是不能被赋初值的。
16.重载运算符的规则:
1.C++不允许用户定义新的运算符,只能是对已有的运算符进行重载
2.重载在不能改变运算符的操作个数这也决定了重载不能有默认的操作数
3.重载在不能改变运算符的优先级、结合性
4.重载的运算符必须和用户自定义的类型的对象一起使用。其参数至少应该有一个是类对象(或者是类引用)参数不能全是标准的类型,以防止用户修改用于标准型数据的运算符性质.、。说到这倒是想起MASM汇编中的宏定义如果和指令相同的话,则执行宏汇编
5.应当使重载的运算符的功能类似运算符的原义
6.针对"++"和"- -"既可以看成是前置运算符和后置运算符的运算符,c++约定如果在自增或者是自减运算符中增加一个int类型的话。那么她就是后置的了
7."<<" ">>" 只能重载为友元函数或者是普通函数
相关文章推荐
- C++ 语法tips
- C++读取输入的一行字符包括空格语法
- C++初始化列表问题,类中有一个对象类型的数组成员变量,在初始化列表中初始化时报错“[]”操作符语法错误
- 【C++】继承语法&&继承方式
- C++ 11语法甜点2
- 【C/C++语法】Chapter 1
- sizeof和小部分c++语法
- [收藏]C++ Tips(1)--const
- [收藏]C++ Tips(12)--||和&&的语句执行顺序
- C++和Java,绝不只是语法不同这么简单
- 【C++】C++语法的一些小问题
- C/C++语法知识:typedef struct 用法详解
- c/c++ 小语法提示
- C++中总是出错 #include "stdafx.h"语法错误
- [收藏]C++ Tips(2)--new,delete
- c++ 语法
- 不理解C++语法
- C++ 11标准新增加了Lambda表达式、for_each语法,修改了auto
- C++语言体系设计哲学的一些随想(未完待续)
- Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)