c++语言的问题。
c++和c对比谁更别广泛使用?c++不需要使用宏,宏是什么?const和enum,template,namespace是什么?不必使用malloc()和free()可这两...
c++和c对比谁更别广泛使用?c++不需要使用宏,宏是什么?const和enum,template,namespace是什么?不必使用malloc()和free()可这两个的意思是什么?还有new和delete是什么运算?不懂的实在是太多,有谁可以帮帮我+qq526866067. 再请教一句,请问c++和c#那个更使用点?也就是那个是现在的主流?
展开
6个回答
展开全部
C是系统级的编程语言
C++是功能很强大,比C开发效率高,因为C++提供了很多算法和容器类。主要用于多种应用开发,尤其是桌面开发。
C#,很java类似,有自个的应用框架,开发web和桌面程序速度很快。而且基于.net执行,.net其实就是在本地电脑上又加了一层运行时。这样可以很好的解决本地异构的问题,凡这种语言类脚本语言,特别适合做web开发,因为web开发主要是面临异构的问题。
代码生成效率:C<C++<C#
代码执行效率:C>=C++>C#
1.c++中可以使用宏,当然C++中有很多方式可以避免宏的使用,宏就是文本替换,你给一段代码起一个名字,然后再你程序中用的这段的代码的时候,就直接插入宏名即可,编译之前(预编译)由预编译器将宏名换成实际代码,然后编译。C++中替代宏的方案有内联函数(inline),enum,const,template之类的东西。
2.const是变量限定词,类似的有volatile,register,auto,static,extern之类,你可以翻阅相关参考书(C++ primer)。const和宏常量,enum常量不同,const分配了存储空间,在程序的.rdata段中,但请注意,这个词不要常用,你应该用它来先点函数的传入参数。
3.enum即枚举类型,枚举是整形的一个子集,而且这个东西比宏常量好,宏常量出现在预编译时,enum常量出现在编译时,const常量出现在运行时。因此宏常量只是文本替换,enum常量需要做静态类型检测,如果类型不匹配,则报编译时错误。const常量会做运行时类型检测。
4.template是C++泛型编程中内容,所谓泛型编程就是编写的代码可以针对多个数据类型。如你可以编写一个加法函数,这个函数可以进行整数,浮点数,复数浮点运算,也可以进行字符串的拼接运算。
5.namespace是命名空间,用来解决标识符命名冲突的问题。其实就是形成双冒号分字符串来形成标识符。如std::myns::str="ni shi xiao gou!"; std::youns::str="ni bu shi xiao gou~".
6.malloc,free 是C语言中动态创建变量用的,new和delete是C++中动态创建变量用的。其中malloc和new是分配,free和delete是回收。当然new和delete比malloc和free高级。
还是不懂的话,就认真看书吧 ,我告诉你这些,你要是明白了 超出大学本科水平了 !
C++是功能很强大,比C开发效率高,因为C++提供了很多算法和容器类。主要用于多种应用开发,尤其是桌面开发。
C#,很java类似,有自个的应用框架,开发web和桌面程序速度很快。而且基于.net执行,.net其实就是在本地电脑上又加了一层运行时。这样可以很好的解决本地异构的问题,凡这种语言类脚本语言,特别适合做web开发,因为web开发主要是面临异构的问题。
代码生成效率:C<C++<C#
代码执行效率:C>=C++>C#
1.c++中可以使用宏,当然C++中有很多方式可以避免宏的使用,宏就是文本替换,你给一段代码起一个名字,然后再你程序中用的这段的代码的时候,就直接插入宏名即可,编译之前(预编译)由预编译器将宏名换成实际代码,然后编译。C++中替代宏的方案有内联函数(inline),enum,const,template之类的东西。
2.const是变量限定词,类似的有volatile,register,auto,static,extern之类,你可以翻阅相关参考书(C++ primer)。const和宏常量,enum常量不同,const分配了存储空间,在程序的.rdata段中,但请注意,这个词不要常用,你应该用它来先点函数的传入参数。
3.enum即枚举类型,枚举是整形的一个子集,而且这个东西比宏常量好,宏常量出现在预编译时,enum常量出现在编译时,const常量出现在运行时。因此宏常量只是文本替换,enum常量需要做静态类型检测,如果类型不匹配,则报编译时错误。const常量会做运行时类型检测。
4.template是C++泛型编程中内容,所谓泛型编程就是编写的代码可以针对多个数据类型。如你可以编写一个加法函数,这个函数可以进行整数,浮点数,复数浮点运算,也可以进行字符串的拼接运算。
5.namespace是命名空间,用来解决标识符命名冲突的问题。其实就是形成双冒号分字符串来形成标识符。如std::myns::str="ni shi xiao gou!"; std::youns::str="ni bu shi xiao gou~".
6.malloc,free 是C语言中动态创建变量用的,new和delete是C++中动态创建变量用的。其中malloc和new是分配,free和delete是回收。当然new和delete比malloc和free高级。
还是不懂的话,就认真看书吧 ,我告诉你这些,你要是明白了 超出大学本科水平了 !
追问
额,我肯定不懂,我只是高中毕业生,(数据结构——c语言描述)这本书适合我这个设么都不懂的人看么?
追答
呵呵 这本书 是学习数据结构和算法的,不适合你看,你可以看c++ primer,网上下的到!
其实,入门用什么书都行,国人写的书,比较浅显的,你可以看看。但你提到的这本书不是入门书,你不要看。我给你列表,其中你现在处在第一层:
第一层:语言基础和相关的集成开发环境(IDE)
第二次:数据结构和算法
第三次:泛型编程和设计模式
第四层:软件工程。
呵呵 祝你好运 早日成才!
展开全部
void show()const;这种是c++中的函数声明。
它说明show()是一个常量成员函数。
注意show()必须是一个类的成员函数,后面才可以加上个const;
表示它是常量成员函数。
它表示const成员函数不能修改调用该函数的对象。
例如:
#include <iostream>
using namespace std;
class A
{
public:
void show()const
{
a=1;
cout<<a<<endl;
}
private:
int a;
};
中show()函数就是错误的,因为它改变了类对象中的a的值了,所以编译的话就会报错。
去掉修改a的值的语句a=1;
程序就不会报错了。
它说明show()是一个常量成员函数。
注意show()必须是一个类的成员函数,后面才可以加上个const;
表示它是常量成员函数。
它表示const成员函数不能修改调用该函数的对象。
例如:
#include <iostream>
using namespace std;
class A
{
public:
void show()const
{
a=1;
cout<<a<<endl;
}
private:
int a;
};
中show()函数就是错误的,因为它改变了类对象中的a的值了,所以编译的话就会报错。
去掉修改a的值的语句a=1;
程序就不会报错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理论性的东西百度都能找到不废话了
c++和c对比谁更别广泛使用
看你干什么了,写驱动,系统这类的基础平台用的是C(最底层的接口一般是汇编),前台的用的是C++
请问c++和c#那个更使用点?也就是那个是现在的主流?
C#因为简单,容易上手,而且提供了比较强大的窗体设计,在应用程序上比C++更偏向使用。至于说哪个是主流,抱歉这些都不是,java才是目前的主流
c++和c对比谁更别广泛使用
看你干什么了,写驱动,系统这类的基础平台用的是C(最底层的接口一般是汇编),前台的用的是C++
请问c++和c#那个更使用点?也就是那个是现在的主流?
C#因为简单,容易上手,而且提供了比较强大的窗体设计,在应用程序上比C++更偏向使用。至于说哪个是主流,抱歉这些都不是,java才是目前的主流
追问
我不懂啊,那java对于一个高中刚毕业,且对电脑一窍不通的学生来说可以学会么?
追答
什么都不懂的学C,学好了C再考虑学其他的语言
附加下,学C不仅仅只是学基础的C,还要学习C的数据结构,当然数据结构要等到能数量使用C语言时再去看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学计算机的吗?那就这好C和算法吧;
至于谁更有用的问题,得看你是做什么的了;都很有用,
c/c++几十年一直风行,可见其价值。做管理系统什么的用C#吧
其它问题,百度一下,都能找得到的
至于谁更有用的问题,得看你是做什么的了;都很有用,
c/c++几十年一直风行,可见其价值。做管理系统什么的用C#吧
其它问题,百度一下,都能找得到的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、构造函数构建的临时对象不能转化成非const引用,所以类型不匹配。
把operator+的两个参数都加上const。
2、你的构造函数有歧义,解决了第一条后还会出现错误,用0.5构造一个复数时出现歧义,以为2个参数的构造函数的参数都有默认值,编译器不能确定到底用哪个。
第二个构造函数是多余的,注释掉。
这两条改过后我自己运行了下没问题了。
把operator+的两个参数都加上const。
2、你的构造函数有歧义,解决了第一条后还会出现错误,用0.5构造一个复数时出现歧义,以为2个参数的构造函数的参数都有默认值,编译器不能确定到底用哪个。
第二个构造函数是多余的,注释掉。
这两条改过后我自己运行了下没问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询